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
}