Run Code
|
API
|
Code Wall
|
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 31-i binary[31-i] = 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: "); // use % d for decimal // use % x for hex scanf("%d", &a); printf("\nDecimal: %d\n", a); printf("Hex: 0x%x\n", a); char binary[33]; DecimalToBinary(a, binary); printf ("Binary: %s\n", binary); // IN CLASS ***************************************************** // imagine a = 123 and you want lowest digit ==> use mod 10 to get down to lowest number // now write a few lines of code that gives the least significant byte of a as an integer or char // a = 0xabcd1234 output = 0x34 // a = -1 = 0xffffffff then output = 0xff int temp = a % 256; // 2^8 = 256 printf("Hex: 0x%x\n", temp); // now give four bits starting from bit postion 3 // shift to the right three times and mask the extra // & operation can be used to force some bits to 0 // the mask that you need has 0s on those bits and 1s on the rest // shift int temp2 = a >> 3; // mask temp2 = temp2 & 0xf; // 0xf is called the mask printf("Hex: 0x%x\n", temp2); // now set the bits 4, 5 and 6 to 1, leave the rest of the bits unchanged // create a new number with 1s where you want them, and 0s for the other bits // 00...00 0111 0000 = 0x70 int temp3 = a | 0x70; // **************************************************************** return 0; }
run
|
edit
|
history
|
help
1
150108_RecursividadFibonacci
Area
Funciones en C
18BCE2182 ASSESS_1 Q1-4
Test2
Jan23
Type struct
120465-11.1-3E
-Wall
B_141128_MatrizProducto