Testing binstr_x (uintX_t x), getmsb (uint64_t x), getlsb (uint64_t) x : 216, hex: d8, (msb, lsb) : 7, 3 binary: 11011000 x : 58251, hex: e38b, (msb, lsb) : 15, 0 binary: 1110001110001011 x : 2047483648, hex: 7a0a1f00, (msb, lsb) : 30, 8 binary: 01111010000010100001111100000000 x : 9023372036854775808, hex: 7d39750f44ec0000, (msb, lsb) : 62, 18 binary: 0111110100111001011101010000111101000100111011000000000000000000 Testing fmtbinstr_x (uintX_t x, size_t szgrp, char *sep) x : 216, hex: d8, fmtbinstr_8 (a, 4, "-") : 1101-1000 x : 58251, hex: e38b, fmtbinstr_16 (b, 4, "-") : 1110-0011-1000-1011 x : 2047483648, hex: 7a0a1f00, fmtbinstr_32 (c, 4, "-") : 0111-1010-0000-1010-0001-1111-0000-0000 x : 9023372036854775808, hex: 7d39750f44ec0000, fmtbinstr_64 (d, 4, "-"): 0111-1101-0011-1001-0111-0101-0000-1111-0100-0100-1110-1100-0000-0000-0000-0000 Test of size group (szgrp : 1-8) with fmtbinstr_16 (511, x, "-") fmtbinstr_16 (511, 1, "-"): 0-0-0-0-0-0-0-1-1-1-1-1-1-1-1-1 fmtbinstr_16 (511, 2, "-"): 00-00-00-01-11-11-11-11 fmtbinstr_16 (511, 3, "-"): 0-000-000-111-111-111 fmtbinstr_16 (511, 4, "-"): 0000-0001-1111-1111 fmtbinstr_16 (511, 5, "-"): 0-00000-01111-11111 fmtbinstr_16 (511, 6, "-"): 0000-000111-111111 fmtbinstr_16 (511, 7, "-"): 00-0000011-1111111 fmtbinstr_16 (511, 8, "-"): 00000001-11111111 Testing bin_nopad (char *str) to strip leading 0's x : 338, hex: 152 binary: 0000000101010010 (char *bsp) no pad: 101010010 Testing binstr_sep (char *str, size_t szgrp, char *sep) binstr_sep (bsp, 4, " "): 0000 0001 0101 0010 binstr_sep (bsp, 4, "-"): 0000-0001-0101-0010 binstr_sep (bsp, 2, ":"): 00:00:00:01:01:01:00:10 Testing msb, lsb, n1s, nlz, ntz: value : 0000000111111000 (504) getmsb: 8 getlsb: 3 getn1s: 6 (population of 1's) nlz : 7 (number of leading 0's) ntz : 3 (number of trailing 0's) Testing binstr_8 & binstr_8d - illustrate static buffer issue: 88 & 87 = 80 (01010000) --------------- E R R O R --------------- | multiple binstr_x calls in printf | | fail due to static char buffer. | ----------------------------------------- 88 01011000 rightmost bit off: 01011000 88 01011000 87 01011000 & --------- 01011000 ----------------- OK ------------------ | split into multiple printf calls | ----------------------------------------- 88 01011000 rightmost bit off: 01010000 88 01011000 87 01010111 & --------- 01010000 ----------------- OK ------------------ | multiple binstr_xd calls in printf | ----------------------------------------- 88 01011000 rightmost bit off: 01010000 88 01011000 87 01010111 & --------- 01010000 ----------------------------------------- Testing Conversions to IEEE 754 Format val : 12345 u2f : 1178657792 hex : 0x4640e400 bin : 01000110010000001110010000000000 val : 12345 i2f : 1178657792 hex : 0x4640e400 bin : 01000110010000001110010000000000 IEEE 754 -> double ieee 754 ( 1178657792 ) = 12345.000000 Original values for swap testing: char int float f: a | h: 1 | j: 3.4 g: b | i: 2 | k: 5.6 Values after swap macro: char int float f: b | h: 2 | j: 5.6 g: a | i: 1 | k: 3.4 Values after swap functions: char int float f: a | h: 1 | j: 3.4 g: b | i: 2 | k: 5.6 Testing bitfield 58251 -> 1110001110001011 bit_isset ( 0, 58251) : 1 bit_isset ( 1, 58251) : 1 bit_isset ( 2, 58251) : 0 bit_isset ( 3, 58251) : 1 bit_isset ( 4, 58251) : 0 bit_isset ( 5, 58251) : 0 bit_isset ( 6, 58251) : 0 bit_isset ( 7, 58251) : 1 bit_isset ( 8, 58251) : 1 bit_isset ( 9, 58251) : 1 bit_isset (10, 58251) : 0 bit_isset (11, 58251) : 0 bit_isset (12, 58251) : 0 bit_isset (13, 58251) : 1 bit_isset (14, 58251) : 1 bit_isset (15, 58251) : 1 Testing bitfield values 58251 -> 1110001110001011 bit_isset ( 0, 58251) : 1 bit_isset ( 1, 58251) : 2 bit_isset ( 2, 58251) : 0 bit_isset ( 3, 58251) : 8 bit_isset ( 4, 58251) : 0 bit_isset ( 5, 58251) : 0 bit_isset ( 6, 58251) : 0 bit_isset ( 7, 58251) : 128 bit_isset ( 8, 58251) : 256 bit_isset ( 9, 58251) : 512 bit_isset (10, 58251) : 0 bit_isset (11, 58251) : 0 bit_isset (12, 58251) : 0 bit_isset (13, 58251) : 8192 bit_isset (14, 58251) : 16384 bit_isset (15, 58251) : 32768 =====================(+)====== Total Sum of Values : 58251 Testing bit functions, set, clear, toggle, etc... b : 58251 => 1110001110001011 bit_set (58255,2): 1110001110001111 bit_set (58271,4): 1110001110011111 bit_set (58303,5): 1110001110111111 b : 58303 => 1110001110111111 Testing circular-rotate left/right on 8 bit number 122 01111010 rotate-left: 244 11110100 rotl_8 (122, 1) 233 11101001 rotl_8 (122, 2) 211 11010011 rotl_8 (122, 3) 167 10100111 rotl_8 (122, 4) 79 01001111 rotl_8 (122, 5) 158 10011110 rotl_8 (122, 6) 61 00111101 rotl_8 (122, 7) 122 01111010 rotl_8 (122, 8) rotate-right: 61 00111101 rotr_8 (122, 1) 158 10011110 rotr_8 (122, 2) 79 01001111 rotr_8 (122, 3) 167 10100111 rotr_8 (122, 4) 211 11010011 rotr_8 (122, 5) 233 11101001 rotr_8 (122, 6) 244 11110100 rotr_8 (122, 7) 122 01111010 rotr_8 (122, 8)