# show results of bitwise operations on various operand combinations procedure main () every i := 1 | '2' | "3" | 16r80361752 do { write ( " i j ~j i & j i | j i ^ j i << j i >> j") every j := 0 | 1 | 2 | 3 | 4 | 100 do { word (i) word (j) word (icom (j)) word (iand (i, j)) word (ior (i, j)) word (ixor (i, j)) word (ishift (i, j)) word (ishift (i, -j)) write () } } end # write word in hexadecimal procedure word (v) xd (v, 8) writes (" ") return end # write n low-order hex digits of v procedure xd (v, n) xd (ishift (v, -4), 0 < n - 1) writes ("0123456789ABCDEF" [1 + iand (v, 16r0F)]) return end