이것은 난해한 프로그래밍 언어 를 발명 하려는 나의 탐구와 관련이 있습니다 .
이진수 0 .. 15의 테이블을 사용하여 인덱싱 작업을 사용하여 범용 이진 함수를 구현할 수 있습니다. 2 개의 1 비트 입력 X와 Y가 주어지면 16 개의 가능한 모든 기능을 4 비트 opcode로 인코딩 할 수 있습니다.
X Y F|0 1 2 3 4 5 6 7 8 9 A B C D E F
- - - - - - - - - - - - - - - - - -
0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
- - - - - - - - -
0 ~X ~Y ^ & Y X | 1
ZERO NOT-Y AND OR
NOT-X XOR ONE
따라서이 16 가지 기능 세트를 함수로 이진 입력에 적용 할 수 있습니다.
U (f, x, y) : (f >> ((x << 1) | y)) & 1 ,
또는
U (f, x, y) : (f / 2 ^ (x × 2 + y)) % 2 ,
또는 인덱싱 또는 매트릭스 파티셔닝으로.
이러한 유형의 이진 연산에 빌드 될 수있는 모든 언어에 대해 이러한 값 테이블을 나타내거나 생성하는 가장 간단한 방법을 아는 것이 유용합니다.
목표:
이 정확한 텍스트 출력을 생성하십시오.
0101010101010101
0011001100110011
0000111100001111
0000000011111111
그게 다야! 최단 코드 승리.