Help / Release / J 5.01 / b. Bitwise Operations Implemented

From J Wiki
Jump to navigation Jump to search


>> << Pri JfC LJ Phr Dic Voc !: Rel NuVoc wd Help Release



b. Implements Bitwise Operations

initial writing: 2001-11-22
last updated: 2004-10-26


The adverb m b. has been extended to compute bitwise functions on integer arguments. An argument atom is treated as a list of length w of bits, where w is the word size of the underlying machine. m=16+k specifies the boolean function whose ravelled function table is #:k . For example, 17 b. specifies bitwise and (17 16+1 16+#.0 0 0 1). There is special code to effect efficient execution of the following cases:

  m b."r  monad and dyad
  m b./  monad and dyad
  m b./\  monad
  m b./\.  monad


Finally, 32 b. specifies rotate, 33 b. specifies shift, and 34 b. specifies signed shift.


See also the b. entry in the dictionary.

Examples:


   12345 (17 b.) 67890           bitwise and
48
   f=: (32#2)&#: { '.x'"_
   f 12345 67890 48
..................xx......xxx..x
...............x....x..x..xx..x.
..........................xx....

   _12345 (23 b.) 67890          bitwise or
_12297
   f _12345 67890 _12297
xxxxxxxxxxxxxxxxxx..xxxxxx...xxx
...............x....x..x..xx..x.
xxxxxxxxxxxxxxxxxx..xxxxxxxx.xxx

   20 b./~ i.10                  bitwise less than table
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                cumulative bitwise or
1 3 7 15 31 63 127 255 511 1023

   _5 (33 b.) 12345              shift
385
   f 12345 385   
..................xx......xxx..x
.......................xx......x

   _5 (33 b.) _12345              shift
134217342
   f _12345 134217342
xxxxxxxxxxxxxxxxxx..xxxxxx...xxx
.....xxxxxxxxxxxxxxxxxx..xxxxxx.

   _5 (34 b.) _12345              signed shift
_386
   f _12345 _386
xxxxxxxxxxxxxxxxxx..xxxxxx...xxx
xxxxxxxxxxxxxxxxxxxxxxx..xxxxxx.



>> << Pri JfC LJ Phr Dic Voc !: Rel NuVoc wd Help Release