summaryrefslogtreecommitdiffstats
path: root/contrib/awk/awklib/eg/prog/testbits.awk
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2001-11-02 21:06:08 +0000
committerobrien <obrien@FreeBSD.org>2001-11-02 21:06:08 +0000
commitcfe0e2b488d886d14fc1755679b8a88165b22d92 (patch)
treefbf9ca4d3f276e13b39090465008b182d20f0e5a /contrib/awk/awklib/eg/prog/testbits.awk
parent9682ea287751aa7aad9e21c50ba74cfb3d7314d0 (diff)
parent223f0286ad0612783e0da01de3b5bfdc52e3b25c (diff)
downloadFreeBSD-src-cfe0e2b488d886d14fc1755679b8a88165b22d92.zip
FreeBSD-src-cfe0e2b488d886d14fc1755679b8a88165b22d92.tar.gz
This commit was generated by cvs2svn to compensate for changes in r85898,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'contrib/awk/awklib/eg/prog/testbits.awk')
-rw-r--r--contrib/awk/awklib/eg/prog/testbits.awk27
1 files changed, 27 insertions, 0 deletions
diff --git a/contrib/awk/awklib/eg/prog/testbits.awk b/contrib/awk/awklib/eg/prog/testbits.awk
new file mode 100644
index 0000000..143cd91
--- /dev/null
+++ b/contrib/awk/awklib/eg/prog/testbits.awk
@@ -0,0 +1,27 @@
+# bits2str --- turn a byte into readable 1's and 0's
+
+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)
+}
OpenPOWER on IntegriCloud