Run Code

API

Code Wall

Users

Misc

Feedback

Login

Theme

Privacy

Patreon
bitwise operations
/*Simple program showing how to read an integer and printing it to output in different formats.*/ #include "stdio.h" // write a function that gets an integer and a mask and returns the result of using the mask to reset some bits to 0 int ResetBits(int a, int mask) { return (a & mask); } //converts decimal value to a string that represents the binary number //note that decimal is already represented in binary in the memory //all we need is an array of characters 0 and 1 that show the number in binary int DecimalToBinary(int decimal, char *binary) { unsigned int temp = decimal; int i; for (i=0; i<32; i++) { //ASCII code for '0' is 48 and for '1' is 49 //the bit we calculate in this loop is Least Significant Bit (LSB), so the index is 31i binary[31i] = 48+ temp % 2; //dividing by 2, simply shifts the number to right and allows us to process the next bit temp = temp / 2; } //an end is put at the end of binary string. Again this is not a number, but an array of '0's and '1's binary [32] = 0; } int main(void) { int a; printf("Please input an integer value: "); scanf("%x", &a); //reading integer from standard input: "%d" will look for a decimal, &a gives it the address of aputs input in a printf("\nDecimal: %d\n", a); printf("Hex: 0x%x\n", a); char binary[33]; DecimalToBinary(a, binary); printf ("Binary: %s\n", binary); //gives the least significant byte of a as an integer or char //a = 0xabcd1234 output = 0x34 //a = 1 = 0xffffffff output = 0xff //imagine a = 123 and I am asking for lowest digit int temp; temp = a % 256; //use 256 since you want to divide by 2^8 to get remainder printf("Least significant byte: Ox%x\n" ,temp); //give four bits starting from bit position 3 in integer form temp = a >> 3; //shift to the right 3 times so that bit position 3 is in the lsb temp = temp & 0xf; //this number is called maskused to isolate the bit positions you want //or could do temp = (a >> 3) & 0xf; printf("Four bits from position 3: %x\n", temp); //& operation to force some bits to 0 //the mask that you need has 0s on those bits and 1s for the rest //set the bits 4, 5, and 6 to 1 and leave the rest of the bits unchanged temp = a  0x70; DecimalToBinary(temp, binary); printf("Setting bits 46: %s\n", binary); return 0; }
run

edit

history

help
0
Please
log in
to post a comment.
Simple interest
Area and Volume coding
bitmask shift
staircase
lab2
Stack frame enum test
hello world
fibonacci1
Float data type.c
swap_talent.c
Please log in to post a comment.