Поразрядно | m b. _ 0 0 |
Монада эквивалентна случаю нулевого левого аргумента;
тоесть m b. y ↔ 0 m b. y |
Если f диадная булевская функция, а d=: 0 1 ,
тогда d f/ d (или f/~d) есть ее полная таблица
истинности.
Например, ниже приведены таблицы для или, не-или, и, и
не-и:(+./~ ; +:/~ ; *./~ ; *:/~) d=: 0 1 +---+---+---+---+ |0 1|1 0|0 0|1 1| |1 1|0 0|0 1|1 0| +---+---+---+---+Если все эти таблицы отсортировать, то каждая из шестнадцати возможных булевских диад получит некоторый порядковый номер k ; фраза k b. тогда реализует соответствующую функцию. Кроме того, допускаются отрицательные индексы и аргументы в виде массивов. Атом m=16+k обозначает побитовую булевскую функцию целых аргументов. Каждый атом ее аргументов считается битовыми списком длины w , где w — длина слова машины, на которой работает программа. Например, 17 b. выполняет побитовое и. Наконец, 32 b. соответствует циклическому сдвигу, 33 b. сдвигу, а 34 b. сдвигу с учетом знака. |
m | Разобранная Таблица |
Функция | ||||||
0 | _16 | 16 | 0 0 0 0 | 0 | ||||
1 | _15 | 17 | 0 0 0 1 | x *. y | ||||
2 | _14 | 18 | 0 0 1 0 | x > y | ||||
3 | _13 | 19 | 0 0 1 1 | x | ||||
4 | _12 | 20 | 0 1 0 0 | x < y | ||||
5 | _11 | 21 | 0 1 0 1 | y | ||||
6 | _10 | 22 | 0 1 1 0 | x ~: y | ||||
7 | _9 | 23 | 0 1 1 1 | x +. y | ||||
8 | _8 | 24 | 1 0 0 0 | x +: y | ||||
9 | _7 | 25 | 1 0 0 1 | x = y | ||||
10 | _6 | 26 | 1 0 1 0 | -. y | ||||
11 | _5 | 27 | 1 0 1 1 | x >: y | ||||
12 | _4 | 28 | 1 1 0 0 | -. x | ||||
13 | _3 | 29 | 1 1 0 1 | x <: y | ||||
14 | _2 | 30 | 1 1 1 0 | x *: y | ||||
15 | _1 | 31 | 1 1 1 1 | 1 | ||||
32 | циклический сдвиг | |||||||
33 | сдвиг | |||||||
34 | сдвиг с учетом знака |
(7 b./~ ; 8 b./~ ; 1 b./~ ; 14 b./~) d=: 0 1 +---+---+---+---+ |0 1|1 0|0 0|1 1| |1 1|0 0|0 1|1 0| +---+---+---+---+ (_1 b./~ ; _3 b./~ ; _15 b./~) d NB. отрицательные индексы +---+---+---+ |1 1|1 1|0 0| |1 1|0 1|0 1| +---+---+---+ (<"2) 2 0 1 |: 7 8 1 15 b./~ d NB. аргументы в виде массивов +---+---+---+---+ |0 1|1 0|0 0|1 1| |1 1|0 0|0 1|1 1| +---+---+---+---+ 12345 (17 b.) 67890 NB. побитовое и 48 f=: (32#2)&#: { '.x'"_ f 12345 67890 48 ..................xx......xxx..x ...............x....x..x..xx..x. ..........................xx.... _12345 (23 b.) 67890 NB. побитовое или _12297 f _12345 67890 _12297 xxxxxxxxxxxxxxxxxx..xxxxxx...xxx ...............x....x..x..xx..x. xxxxxxxxxxxxxxxxxx..xxxxxxxx.xxx 20 b./~ i.10 NB. таблица побитового меньше 0 1 2 3 4 5 6 7 8 9 0 0 2 2 4 4 6 6 8 8 0 1 0 1 4 5 4 5 8 9 0 0 0 0 4 4 4 4 8 8 0 1 2 3 0 1 2 3 8 9 0 0 2 2 0 0 2 2 8 8 0 1 0 1 0 1 0 1 8 9 0 0 0 0 0 0 0 0 8 8 0 1 2 3 4 5 6 7 0 1 0 0 2 2 4 4 6 6 0 0 23 b./\ 2^i.10 NB. побитовое или с накоплением 1 3 7 15 31 63 127 255 511 1023 _5 (33 b.) 12345 NB. сдвиг 385 f 12345 385 ..................xx......xxx..x .......................xx......x _5 (33 b.) _12345 NB. сдвиг 134217342 f _12345 134217342 xxxxxxxxxxxxxxxxxx..xxxxxx...xxx .....xxxxxxxxxxxxxxxxxx..xxxxxx. _5 (34 b.) _12345 NB. сдвиг с учетом знака _386 f _12345 _386 xxxxxxxxxxxxxxxxxx..xxxxxx...xxx xxxxxxxxxxxxxxxxxxxxxxx..xxxxxx.