diff options
| author | Mattias Andrée <maandree@kth.se> | 2016-03-02 08:57:46 +0100 |
|---|---|---|
| committer | Mattias Andrée <maandree@kth.se> | 2016-03-02 08:57:50 +0100 |
| commit | fe15c7e5b115cae4717f5481e7962cf376066387 (patch) | |
| tree | 31e2a0c18ceabd2deb6be9d78fdf03cb8072cd92 | |
| parent | Add typedef zahl_char_t for internal use (diff) | |
| download | libzahl-fe15c7e5b115cae4717f5481e7962cf376066387.tar.gz libzahl-fe15c7e5b115cae4717f5481e7962cf376066387.tar.bz2 libzahl-fe15c7e5b115cae4717f5481e7962cf376066387.tar.xz | |
Why zbits returns 1 for 0
Signed-off-by: Mattias Andrée <maandree@kth.se>
| -rw-r--r-- | man/zbits.3 | 8 | ||||
| -rw-r--r-- | src/zbits.c | 5 |
2 files changed, 10 insertions, 3 deletions
diff --git a/man/zbits.3 b/man/zbits.3 index 3dea6d9..191a87c 100644 --- a/man/zbits.3 +++ b/man/zbits.3 @@ -25,6 +25,14 @@ absolute value of \(em or 1 if .I a is zero. +.SH RATIONALE +.B zbits +returns 1 rather than 0 if +.B a +is zero, this is to avoid off-by-one errors +and it is the number of digits requires to +write the number in binary. You will see this +in corresponding functions in other libraries. .SH SEE ALSO .BR zlsb (3), .BR zzero (3) diff --git a/src/zbits.c b/src/zbits.c index 8ada62f..f0c15c9 100644 --- a/src/zbits.c +++ b/src/zbits.c @@ -7,9 +7,8 @@ zbits(z_t a) { size_t i; zahl_char_t x; - if (zzero(a)) { - return 1; - } + if (zzero(a)) + return 1; /* Deliver us from evil! */ for (i = a->used - 1;; i--) { x = a->chars[i]; if (x) { |
