使用while循環進行數據的遍歷,將余數存儲在arr的最后幾位
/* 二進制計算 */ #include <stdio.h> int main() { int val = 0, val1 = 0; int tmp = 0; int arr[8] = {0}; int count = 7; printf("請輸入你想要二進制分解的數:"); scanf("%d", &val); //使用變量的地址來接受數據 while (val > 0) { arr[count] = val % 2; val = val / 2; count--; } for (tmp = 0;tmp <= 7;tmp++) { printf("%d", arr[tmp]); } printf("\n"); }
使用&位運算, 使用1000 0000&與數進行位運算獲得最左邊的位數,使用>>1將位數向左移動一位
這樣就可以從左向右獲得數字的二進制數
/* 進行二進制轉換 */ #include <stdio.h> int main() { int val = 0; printf("請輸入一個數字:"); scanf("%d", &val); unsigned char val1 = 0x80; printf("%d", (val & val1) != 0); //如果是1的話還是1,如果是0的話還是0,獲得最左邊的一個數 val1 >>= 1; //將Ox80轉換位0100 0000 printf("%d", (val & val1) != 0); //如果是1的話還是1,如果是 val1 >>= 1; //將Ox80轉換位0010 0000 printf("%d", (val & val1) != 0); //如果是1的話還是1,如果是 val1 >>= 1; //將Ox80轉換位0001 0000 printf("%d", (val & val1) != 0); //如果是1的話還是1,如果是 val1 >>= 1; //將Ox80轉換位0000 1000 printf("%d", (val & val1) != 0); val1 >>= 1; //將Ox80轉換位0000 0100 printf("%d", (val & val1) != 0); //如果是1的話還是1,如果是 val1 >>= 1; //將Ox80轉換位0000 0010 printf("%d", (val & val1) != 0); //如果是1的話還是1,如果是 val1 >>= 1; //將Ox80轉換位0000 0001 printf("%d\n", (val & val1) != 0); //如果是1的話還是1,如果是 }
