Blame awklib/eg/prog/testbits.awk

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