Help / Release / J 4.05 / 3!:1, 3!:2, and 3!:3 Ext

From J Wiki
Jump to navigation Jump to search


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



3!:1, 3!:2, and 3!:3 Extended

initial writing: 2000-00-00
last updated: 2004-10-26


In standard byte order, the bytes of a word are listed from most significant to least significant; in reverse byte order, the bytes are listed from least significant to most significant. For example, the 4-byte integer 265358979 is 0fd10e83 in standard byte-order and 830ed10f in reverse byte-order. The PC is a reverse byte order machine.

The dyad x 3!:1 y applies to an array y and produces its binary representation, according to the atom x:

  x     word size     byte order
00 32 bits standard
01 32 bits reverse
10 64 bits standard
11 64 bits reverse


The monad 3!:1 produces the binary representation in the word size and byte order of the current machine. 3!:3 produces the hexadecimal representation of an array, analoguous to 3!:1. The monad 3!:2 is the inverse of 3!:1 and 3!:3, and works on an argument in either word size and in either byte order.

The following examples were executed on a 32-bit, reverse byte order machine.

   bin  =: 3!:1
   hex  =: 3!:3
   unbin=: 3!:2
   
   x -: unbin bin x=: 3 1 4 1 5 _9 265358979
1
   x -: unbin hex x
1
   x -: unbin 0 bin x
1
   x -: unbin 1 bin x
1
   x -: unbin 10 bin x
1
   x -: unbin 11 bin x
1
   $ bin x
48
   _4 [\ a.i.bin x
  4   0   0   0
  0   0   0   0
  7   0   0   0
  1   0   0   0
  7   0   0   0
  3   0   0   0
  1   0   0   0
  4   0   0   0
  1   0   0   0
  5   0   0   0
247 255 255 255
131  14 209  15
   _4 [\ a.i.0 bin x
  0   0   0   4
  0   0   0   0
  0   0   0   7
  0   0   0   1
  0   0   0   7
  0   0   0   3
  0   0   0   1
  0   0   0   4
  0   0   0   1
  0   0   0   5
255 255 255 247
 15 209  14 131
   (hex x),.' ',.(0 hex x),.' ',.(1 hex x),.' ',.(10 hex x),.' ',.(11 hex x)
04000000 00000004 04000000 0000000000000004 0400000000000000
00000000 00000000 00000000 ffffffffffffffff ffffffffffffffff
07000000 00000007 07000000 0000000000000007 0700000000000000
01000000 00000001 01000000 0000000000000001 0100000000000000
07000000 00000007 07000000 0000000000000007 0700000000000000
03000000 00000003 03000000 0000000000000003 0300000000000000
01000000 00000001 01000000 0000000000000001 0100000000000000
04000000 00000004 04000000 0000000000000004 0400000000000000
01000000 00000001 01000000 0000000000000001 0100000000000000
05000000 00000005 05000000 0000000000000005 0500000000000000
f7ffffff fffffff7 f7ffffff fffffffffffffff7 f7ffffffffffffff
830ed10f 0fd10e83 830ed10f 000000000fd10e83 830ed10f00000000
   (hex -: 1&hex) x
1

   (0 hex y) ,. ' ' ,. 1 hex y=: o. i. 2 3
00000008 08000000
00000000 00000000
00000006 06000000
00000002 02000000
00000002 02000000
00000003 03000000
00000000 00000000
00000000 00000000
400921fb 182d4454
54442d18 fb210940
401921fb 182d4454
54442d18 fb211940
4022d97c d221337f
7f3321d2 7cd92240
402921fb 182d4454
54442d18 fb212940
402f6a7a 5e385529
2955385e 7a6a2f40

   (0 hex y) ,. ' ' ,. 1 hex y=: ;:'We the people'
00000020 20000000
00000000 00000000
00000003 03000000
00000001 01000000
00000003 03000000
00000020 20000000
00000038 38000000
00000050 50000000
00000002 02000000
00000000 00000000
00000002 02000000
00000001 01000000
00000002 02000000
57650000 57650000
00000002 02000000
00000000 00000000
00000003 03000000
00000001 01000000
00000003 03000000
74686500 74686500
00000002 02000000
00000000 00000000
00000006 06000000
00000001 01000000
00000006 06000000
70656f70 70656f70
6c650000 6c650000



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