bitwise-utils
Documentation
Additional bitwise routines.
Usage
(import bitwise-utils)logical-shift-left
(logical-shift-left N1 N2) -> integerReturns left shift of N1 by N2 bits.
N1integer; what to shift.N2fixnum; amount to shift.
Aliases arithmetic-shift.
logical-shift-right
(logical-shift-right N1 N2) -> integerReturns right shift of N1 by N2 bits. Sign preserving.
N1integer; what to shift.N2fixnum; amount to shift.
arithmetic-shift-left
(arithmetic-shift-left N1 N2) -> integerReturns left shift of N1 by N2 bits.
N1integer; what to shift.N2fixnum; amount to shift.
Aliases arithmetic-shift.
arithmetic-shift-right
(arithmetic-shift-right N1 N2) -> integerReturns right shift of N1 by N2 bits. Sign extending.
N1integer; what to shift.N2fixnum; amount to shift.
Essentially (arithmetic-shift <> (- <>)).
bitwise-mask
(bitwise-mask WID [ON?]) -> integerReturns WID low-order bits ON?.
WIDfixnum; mask bit width.ON?boolean;#tis#b1,#fis#b0; default#t.
(bitwise-mask 5 #t) ;=> +0...011111 (#b+011111)
(bitwise-mask 5 #f) ;=> -1...100000 (#b-100000)bitwise-join
(bitwise-join N0 [N1 ...]) -> integerReturns adjoined bits.
N0integer; seed.N1 ...integer ...; adjoins seed left-to-right.
(bitwise-join #b10 #b0000001 #b101) ;=> #b101101bitwise-split
(bitwise-split N WID) -> (list-of integer)Returns N disjoined every WID bits.
Ninteger; seed.WIDfixnum; bit width.
(bitwise-split #xabcdef 4) ;=> (#xa #xb #xc #xd #xe #xf)
(bitwise-split #x-abcdef 4) ;=> (#x-a #x-b #x-c #x-d #x-e #x-f)bitwise-count
(bitwise-count N) -> fixnumReturns number of set bits in N.
Ninteger
bitwise-merge
(bitwise-merge MASK N0 N1) -> integerMASKintegerN0integerN1integer
Renamed SRFI-60 bitwise-if.
bitwise-nth?
(bitwise-nth? INDEX N) -> booleanINDEXintegerNfixnum
Renamed SRFI-60 bit-set?.
bitwise-any?
(bitwise-any? N1 N2) -> booleanN1integerN2integer
Renamed SRFI-60 any-bits-set?.
bitwise-first-set
(bitwise-first-set N) -> fixnumN- integer
Renamed SRFI-60 first-set-bit.
bitwise-reverse
(bitwise-reverse N K) -> integerN- integer
K- fixnum
bitwise-rotate
(bitwise-rotate K COUNT LEN) -> integerPerforms (bitwise-field-rotate K COUNT 0 LEN).
KintegerCOUNTfixnumLENfixnum
bitwise-set-nth
(bitwise-set-nth TO INDEX ON?) -> integerTOintegerINDEXfixnumON?boolean;#tis#b1,#fis#b0
Renamed SRFI-60 (copy-bit k n b); note argument order change.
bitwise-field
(bitwise-field N START END) -> integerNintegerSTARTfixnumENDfixnum
Renamed SRFI-60 bit-field.
bitwise-field-copy
(bitwise-field-copy TO FROM START END) -> integerTOintegerFROM- integer
STARTfixnumENDfixnum
Renamed SRFI-60 copy-bit-field.
bitwise-field-reverse
(bitwise-field-reverse N START END) -> integerNintegerSTARTfixnumENDfixnum
Renamed SRFI-60 reverse-bit-field.
(bitwise-field-rotate N COUNT START END) -> integerNintegerCOUNTfixnumSTARTfixnumENDfixnum
Renamed SRFI-60 rotate-bit-field.
number->boolean
(number->boolean NUM) -> boolean0 => #f & ¬ 0 => #t.
boolean->number
(boolean->number ANY) -> fixnum#f => 0 & #t => 1.
integer->list
(integer->list K [LEN]) -> (list-of boolean)Kinteger; integer to represent as a bit list.LENfixnum; number of bits, default is all bits.
list->integer
(list->integer BOOLS) -> integerBOOLSlist; treated as(list-of boolean-like)
bitwise-zeros
(bitwise-zeros N) -> integerReturn N zero bits.
Nfixnum
bitwise-ones
(bitwise-ones N) -> integerReturn N one bits.
Nfixnum
bitwise-abs
(bitwise-abs N) -> integerShould N be negative bitwise-not the result.
Ninteger
bitwise-drop-right
(bitwise-drop-right N W) -> integerDrop W right bits of N.
NintegerWfixnum
bitwise-cons
(bitwise-cons N M) -> integerConcatenate N & M.
NintegerMinteger
Requirements
Author
Repository
This egg is hosted on the CHICKEN Subversion repository:
https://anonymous@code.call-cc.org/svn/chicken-eggs/release/5/bitwise-utils
If you want to check out the source code repository of this egg and you are not familiar with Subversion, see this page.
Version history
- 1.4.1
- Fix
list->integertype regression. Fixboolean->numbersignature. - 1.4.0
- Add {{}} & {{}}. Fix signatures (clean, not pure).
- 1.3.2
- Slight speed-up.
- 1.3.1
- New test-runner, add tests.
- 1.3.0
- Export useful helpers
bitwise-zeros,bitwise-ones,bitwise-abs,bitwise-drop-right, &bitwise-cons. - 1.2.2
- Fix
bitwise->count. - 1.2.2
- Fix
integer->list/list->integerso invertible. - 1.2.1
- .
- 1.2.0
- Remove
srfi-60module. (Usesrfi-60egg.) - 1.1.4
- Fix
integer->listtype. - 1.1.3
- .
- 1.1.2
- .
- 1.1.1
- .
- 1.1.0
- Add
srfi-60module. - 1.0.1
- .
- 1.0.0
- Release.
License
This code is in the public domain.