2021-04-17: y_cell

This is a library for fast bit-manipulation of cells:

Reverse all the bits in a cell:

Example: 0b11110000000000000000000000000000 Becomes: 0b00000000000000000000000000001111

Example: 0b10110011100011110000111110000010 Becomes: 0b01000001111100001111000111001101

Example: 0b01010101010101010101010101010101 Becomes: 0b10101010101010101010101010101010

Reverse all the nibbles in a cell:

Example: 0x12345678 Becomes: 0x87654321

Example: 0x010F0703 Becomes: 0x3070F010

Example: 0xF0F0F0F0 Becomes: 0x0F0F0F0F

Reverse all the bytes in a cell:

Example: 0x12345678 Becomes: 0x78563412

Example: 0x01020304 Becomes: 0x04030201

Example: 0xFF00FF00 Becomes: 0x00FF00FF

Count all the 1s in a cell.

Example: 0 Returns: 0

Example: 1 Returns: 1

Example: 0x01010101 Returns: 4

Returns a number between 0 and 31, representing the least significant set bit in a cell:

Example: 0b00000000000000000000000000000001 Returns: 0

Example: 0b00000000000000000000000000001000 Returns: 3

Example: 0b00010001100011000011100010001000 Returns: 3

WARNING: This function returns 0 if there are no bits set AND if the lowest bit is 1

Returns the lowest set bit in a cell:

Example: 0b00000000000000000000000000000001 Returns: 0b00000000000000000000000000000001

Example: 0b00000000000000000000000000001000 Returns: 0b00000000000000000000000000001000

Example: 0b00010001100011000011100010001000 Returns: 0b00000000000000000000000000001000

This is a library for fast bit-manipulation of cells:

Quote:

Cell_ReverseBits(cell);

Reverse all the bits in a cell:

Example: 0b11110000000000000000000000000000 Becomes: 0b00000000000000000000000000001111

Example: 0b10110011100011110000111110000010 Becomes: 0b01000001111100001111000111001101

Example: 0b01010101010101010101010101010101 Becomes: 0b10101010101010101010101010101010

Quote:

Cell_ReverseNibbles(cell);

Reverse all the nibbles in a cell:

Example: 0x12345678 Becomes: 0x87654321

Example: 0x010F0703 Becomes: 0x3070F010

Example: 0xF0F0F0F0 Becomes: 0x0F0F0F0F

Quote:

Cell_ReverseBytes(cell);

Reverse all the bytes in a cell:

Example: 0x12345678 Becomes: 0x78563412

Example: 0x01020304 Becomes: 0x04030201

Example: 0xFF00FF00 Becomes: 0x00FF00FF

Quote:

Cell_CountBits(cell);

Count all the 1s in a cell.

Example: 0 Returns: 0

Example: 1 Returns: 1

Example: 0x01010101 Returns: 4

Quote:

Cell_GetLowestBit(cell);

Returns a number between 0 and 31, representing the least significant set bit in a cell:

Example: 0b00000000000000000000000000000001 Returns: 0

Example: 0b00000000000000000000000000001000 Returns: 3

Example: 0b00010001100011000011100010001000 Returns: 3

WARNING: This function returns 0 if there are no bits set AND if the lowest bit is 1

Quote:

Cell_GetLowestComponent(cell);

Returns the lowest set bit in a cell:

Example: 0b00000000000000000000000000000001 Returns: 0b00000000000000000000000000000001

Example: 0b00000000000000000000000000001000 Returns: 0b00000000000000000000000000001000

Example: 0b00010001100011000011100010001000 Returns: 0b00000000000000000000000000001000