Binary Bit Fun: |

May the 4th be with you! It’s Jedi day, or Star Wars day, or whatever. Here’s a binary puzzle for you, one which demonstrates how the bitwise OR operator can be used to set bits in an integer value.

#include <stdio.h>

char *binbin(int n);

int main()
{
    int input,result,bit,x;

    bit = 1;
    printf("Type a number between 0 and 255: ");
    scanf("%d",&input);
    printf("%s\n========\n",binbin(input));
    for(x=0;x<8;x++)
    {
        result = bit | input;
        printf("%s\n",binbin(result));
        bit*=2;
    }
    return(0);
}

char *binbin(int n)
{
    static char bin[9];
    int x;

    for(x=0;x<8;x++)
    {
        bin[x] = n & 0x80 ? '1' : '0';
        n <<= 1;
    }
    bin[x] = '\0';
    return(bin);
}

The code asks for input, a teensy int value (8 bits). That value is then manipulated using the logical OR for each bit position, 0 through 7.

Here's how the output looks when zero is input:

You can see the single bit cascading across each value. That bit is set sequentially no matter which value you input. The bit is always set by the bitwise |, which is why I call that operator the set-bit operator.

Leave a Reply