

for setting specific bits, without having to figure out the bit value. Of course, integer division is not exact. This means that their internal registers are 32-bits (or 4-bytes) wide, and that. Thus, 26 (decimal 64) becomes 25 (decimal 32) when right-shifted one position. Then the buf_* extend that to work on arbitrarily large 8-bit buffers, treating the bit buffer as chunks of 8-bits, but operating on potentially every individual bit. So bit 2 2, bit 3 4, bit 4 8 and so on (as shown below in this byte table). All most all general-purpose architectures are at least 32 bit computers. IBITS(A,1,2) is 2 (10 in binary) or effectively.


#Set bits in a byte at specific bit positions how to#
It took me a long time and a lot of head banging on the wall to get these buf_* functions to work, but they are not very elegant and I'm sure many of you can easily spot how to do these "more correctly".īasically, the uint8_* functions are an implementation of bitwise get/set/clear on 8-bit unsigned integers in JavaScript. Set bit in position pos to 0, for example, IBCLR(A,0) is 4 (00.000100). Tl dr: How could you rewrite the buf_get and buf_set functions below to be most optimal?
