View source code
Display the source code in core/bitop.d from which this page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone.

Module core.bitop

This module contains a collection of bit-level operations.

Functions

NameDescription
_popcnt(x) Calculates the number of set bits in an integer using the X86 SSE4 POPCNT instruction. POPCNT is not available on all X86 CPUs.
bitswap(x) Reverses the order of bits in a 32-bit integer.
bitswap(x) Reverses the order of bits in a 64-bit integer.
bsf(v) Scans the bits in v starting with bit 0, looking for the first set bit.
bsr(v) Scans the bits in v from the most significant bit to the least significant bit, looking for the first set bit.
bswap(v) Swaps bytes in a 4 byte uint end-to-end, i.e. byte 0 becomes byte 3, byte 1 becomes byte 2, byte 2 becomes byte 1, byte 3 becomes byte 0.
bswap(v) Swaps bytes in an 8 byte ulong end-to-end, i.e. byte 0 becomes byte 7, byte 1 becomes byte 6, etc. This is meant to be recognized by the compiler as an intrinsic.
bt(p, bitnum) Tests the bit. (No longer an intrisic - the compiler recognizes the patterns in the body.)
btc(p, bitnum) Tests and complements the bit.
btr(p, bitnum) Tests and resets (sets to 0) the bit.
bts(p, bitnum) Tests and sets the bit.
byteswap(x) Swaps bytes in a 2 byte ushort.
inp(port_address) Reads I/O port at port_address.
inpl(port_address) Reads I/O port at port_address.
inpw(port_address) Reads I/O port at port_address.
outp(port_address, value) Writes and returns value to I/O port at port_address.
outpl(port_address, value) Writes and returns value to I/O port at port_address.
outpw(port_address, value) Writes and returns value to I/O port at port_address.
popcnt(x) Calculates the number of set bits in an integer.
rol(value, count) Bitwise rotate value left (rol) or right (ror) by count bit positions.
ror(value, count) Bitwise rotate value left (rol) or right (ror) by count bit positions.

Structs

NameDescription
BitRange Range over bit set. Each element is the bit number that is set.

Authors

Don Clugston, Sean Kelly, Walter Bright, Alex Rønne Petersen, Thomas Stuart Bockman

License

Boost License 1.0