## bit-manipulation

### Is there a way to perform a circular bit shift in C#?

I know that the following is true int i = 17; //binary 10001 int j = i << 1; //decimal 34, binary 100010 But, if you shift too far, the bits fall off the end. Where this happens is a matter of the size of integer you are working with. Is there a way to perform a shift so that the bits rotate around to the other side? I'm looking fo...

### How do you set, clear and toggle a single bit in C?

How to set, clear and toggle a bit in C? ...

### bitwise indexing in C?

I'm trying to implement a data compression idea I've had, and since I'm imagining running it against a large corpus of test data, I had thought to code it in C (I mostly have experience in scripting languages like Ruby and Tcl.) Looking through the O'Reilly 'cow' books on C, I realize that I can't simply index the bits of a simple 'cha...

### Bit reversal of an integer, ignoring integer size and endianness

Given an integer typedef: typedef unsigned int TYPE; or typedef unsigned long TYPE; I have the following code to reverse the bits of an integer: TYPE max_bit= (TYPE)-1; void reverse_int_setup() { TYPE bits= (TYPE)max_bit; while (bits <<= 1) max_bit= bits; } TYPE reverse_int(TYPE arg) { TYPE bit_setter= 1,...

### Given an unsigned int, what's the fastest way to get the "indexes" of the set bits?

So for e.g. 0110 has bits 1 and 2 set, 1000 has bit 3 set 1111 has bits 0,1,2,3 set ...

### Most common C# bitwise operations

For the life of me, I can't remember how to set, delete, toggle or test a bit in a bitfield. Either I'm unsure or I mix them up because I rarely need these. So a "bit-cheat-sheet" would be nice to have. For example: flags = flags | FlagsEnum.Bit4; // Set bit 4. or if ((flags == FlagsEnum.Bit4)) == FlagsEnum.Bit4) // Is there a les...

### Bit manipulation and output in Java

If you have binary strings (literally String objects that contain only 1's and 0's), how would you output them as bits into a file? This is for a text compressor I was working on; it's still bugging me, and it'd be nice to finally get it working. Thanks! ...

### Best algorithm to count the number of set bits in a 32-bit integer?

8 bits representing the number 7 look like this: 00000111 Three bits are set. What is the best algorithm to determine the number of set bits in a 32-bit integer? ...

### Should I use #define, enum or const?

In a C++ project I'm working on I have a flag kind of value which can have 4 values. Those 4 flags can be combined. Flags describe the records in database and can be: new record deleted record modified record existing record Now, for each Record I wish to keep this attribute, so I could use enum: enum { xNew, xDeleted, xModified, xE...

### Optimize y = x*x in Galois field arithmetic

I have this C-code to do multiplications over GF(8): int32_t GaloisMultiply (int32_t a, int32_t b) { int32_t i; int32_t mask = 0x100; int32_t y = 0; for(i=0;i<8;i++) { if(b & mask) { y ^= a; } mask >>= 1; y <<= 1; } if(b & 0x1) { y ^= a; } return(y); } That's more or less the text-boo...

### How to check my byte flag?

I use a byte to store some flag like : 10101010 and I would like to know how to verify that a specific bit is at 1 or 0. ...

### Absolute Beginner's Guide to Bit Shifting?

I've been attempting to learn C in my spare time, and other languages (C#, Java, etc.) have the same concept (and often the same operators) ... What I'm wondering is, at a core level, what does bit-shifting (<<, >>, >>>) do, what problems can it help solve, and what gotchas lurk around the bend? In other words, an absolute beginner's g...

### How to extract four unsigned short ints from one long long int?

Suppose I have one long long int and want to take its bits and construct four unsigned short ints out of it. Particular order doesn't matter much here. I generally know that I need to shift bits and truncate to the size of unsigned short int. But I think I may make some weird mistake somewhere, so I ask. ...

### Bit Twiddle to perform this conversion

curious if anyone might have some insight in how I would do the following to a binary number: convert 01+0 -> 10+1 (+ as in regular expressions, one or more) 01 -> 10 10 -> 01 so, 10101000010100011100 01010100101010100010 and to clarify that this isn't a simple inversion: 000000100000000000 000001010000000000 I w...

### Bitfields in C#

So, bitfields. Specifically, large bitfields. I understand how to manipulate individual values in a bitfield, but how would I go about doing this on a large set, such as say: uint[] bitfield = new uint { 0x0080000, 0x00FA3020, 0x00C8000, 0x0FF00D0 }; The specific problem I'm having is doing left and right shifts that carry through ...

### How can I turn an int into three bytes in Java?

I am trying to convert an int into three bytes representing that int (big endian). I'm sure it has something to do with bit-wise and and bit shifting. But I have no idea how to go about doing it. For example: int myInt; // some code byte b1, b2 , b3; // b1 is most significant, then b2 then b3. *Note, I am aware that an int is 4 b...

### K & R Question: Need help understanding "getbits()" method in Chapter 2

As I've mentioned before, I'm going through K&R, and overall am doing all right with it. However, in chapter 2, the section on bitwise operators (section 2.9), I'm having trouble understanding how one of the sample methods works -- and as a result, I'm having trouble with the associated exercises. (This isn't a dupe of my prior questio...

### What's the best way to convert from network bitcount to netmask?

For example, if I have a network spec like 172.20.10.0/24, "24" is the bitcount. What's the best way to convert that to a netmask like 0xffffff00 ? ...

### How do I programmatically return the max of two integers without...

... using any comparison operators... and without using if, else, etc. ...

### How does XOR variable swapping work?

Can someone explain to me how XOR swapping of two variables with no temp variable works? void xorSwap (int *x, int *y) { if (x != y) { *x ^= *y; *y ^= *x; *x ^= *y; } } I understand WHAT it does, but can someone walk me through the logic of how it works? ...