summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md40
1 files changed, 40 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..3b99bcd
--- /dev/null
+++ b/README.md
@@ -0,0 +1,40 @@
+# binary
+
+This is a liblet (a very small library consisting of one header file and
+one source file) for working with binary numbers in C.
+
+The header file, `binary.h`, defines two macros for external use, `BIN` and
+`BINSTRLEN`. It also declares one function which is defined in the source
+file `binary.c`. Additional macros in `binary.h` which begin with `BIN_`
+are implementation details and should not be considered part of the defined
+interface.
+
+## BIN
+
+The macro `BIN` converts a binary literal number to a `uintmax_t`. For example:
+
+ uintmax_t n = BIN(1010);
+
+This will result in the variable `n` having the value `0xa` (the hex
+representation of the binary literal `1010`).
+
+## BINSTRLEN
+
+The symbolic constant `BINSTRLEN` defines the length of a `uintmax_t`
+represented as a string of characters. Its primary use is for declaring an
+array large enough to hold the results of `binstr()` (see below):
+
+ char s[BINSTRLEN];
+
+## binstr()
+
+ char *binstr(size_t n, char s[n], uintmax_t b);
+
+This function converts the number `b` to its string representation in base 2.
+The least significant `n - 1` bits are stored in the array `s`. The string
+will be null terminated.
+
+## See Also
+
+There is no inverse function of `binstr()` provided, as this can be fulfilled
+by calling `strtoumax()` with the third paramater (`base`) set to `2`.