28 lines
736 B
Awk
28 lines
736 B
Awk
# bits2str --- turn an integer into readable ones and zeros
|
|
|
|
function bits2str(bits, data, mask)
|
|
{
|
|
if (bits == 0)
|
|
return "0"
|
|
|
|
mask = 1
|
|
for (; bits != 0; bits = rshift(bits, 1))
|
|
data = (and(bits, mask) ? "1" : "0") data
|
|
|
|
while ((length(data) % 8) != 0)
|
|
data = "0" data
|
|
|
|
return data
|
|
}
|
|
BEGIN {
|
|
printf "123 = %s\n", bits2str(123)
|
|
printf "0123 = %s\n", bits2str(0123)
|
|
printf "0x99 = %s\n", bits2str(0x99)
|
|
comp = compl(0x99)
|
|
printf "compl(0x99) = %#x = %s\n", comp, bits2str(comp)
|
|
shift = lshift(0x99, 2)
|
|
printf "lshift(0x99, 2) = %#x = %s\n", shift, bits2str(shift)
|
|
shift = rshift(0x99, 2)
|
|
printf "rshift(0x99, 2) = %#x = %s\n", shift, bits2str(shift)
|
|
}
|