Blame awklib/eg/prog/testbits.awk
|
Packit |
575503 |
# bits2str --- turn an integer into readable ones and zeros
|
|
Packit |
575503 |
|
|
Packit |
575503 |
function bits2str(bits, data, mask)
|
|
Packit |
575503 |
{
|
|
Packit |
575503 |
if (bits == 0)
|
|
Packit |
575503 |
return "0"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
mask = 1
|
|
Packit |
575503 |
for (; bits != 0; bits = rshift(bits, 1))
|
|
Packit |
575503 |
data = (and(bits, mask) ? "1" : "0") data
|
|
Packit |
575503 |
|
|
Packit |
575503 |
while ((length(data) % 8) != 0)
|
|
Packit |
575503 |
data = "0" data
|
|
Packit |
575503 |
|
|
Packit |
575503 |
return data
|
|
Packit |
575503 |
}
|
|
Packit |
575503 |
BEGIN {
|
|
Packit |
575503 |
printf "123 = %s\n", bits2str(123)
|
|
Packit |
575503 |
printf "0123 = %s\n", bits2str(0123)
|
|
Packit |
575503 |
printf "0x99 = %s\n", bits2str(0x99)
|
|
Packit |
575503 |
comp = compl(0x99)
|
|
Packit |
575503 |
printf "compl(0x99) = %#x = %s\n", comp, bits2str(comp)
|
|
Packit |
575503 |
shift = lshift(0x99, 2)
|
|
Packit |
575503 |
printf "lshift(0x99, 2) = %#x = %s\n", shift, bits2str(shift)
|
|
Packit |
575503 |
shift = rshift(0x99, 2)
|
|
Packit |
575503 |
printf "rshift(0x99, 2) = %#x = %s\n", shift, bits2str(shift)
|
|
Packit |
575503 |
}
|