一、二進位基礎
二進位是計算機內部處理數據和指令的基本數值系統,只有0和1兩個數字,用於表示計算機中的「開關」狀態。
C語言中列印二進位需要運用到位運算符,位運算符直接對二進位位進行操作。
C語言中採用的是補碼錶示法,原碼取反加1。
二、用移位運算實現二進位輸出
移位運算符在位運算符中常用於二進位數的操作。當使用移位運算符時,每次操作都是將所有位向左或向右移動指定數量的位置。
移位運算的兩種形式:
1、左移運算符: <<。將所有位向左移動指定數量的位置。在左移時,右邊空出的位置以0填充。
2、右移運算符: >>。將所有位向右移動指定數量的位置。
移位運算符可以將一個整數轉換成其二進位表示形式的各個位輸出到終端上,實現二進位輸出。
#include <stdio.h>
int main()
{
int num = 10; //十進位數
printf("二進位輸出:");
for(int i = 31; i >= 0; i--) //按位輸出,從最高位開始
{
printf("%d", num >> i & 1); //移位並與1進行與運算
}
printf("\n");
return 0;
}
三、位運算實現單個二進位位的輸出
除了移位運算之外,位運算還可以實現單個二進位位的輸出,通常運用到「按位與」和「按位或」運算符。
按位與運算符 & 通常用於按位清零操作,即用0清除二進位位,將某一位變為0。而按位或運算符 | 通常用於按位置1操作,即用1對二進位位進行填充,將某一位變為1。
通過位運算可以方便地輸出任意一個二進位數中的指定位,用於查看單個二進位位的取值和狀態。
#include <stdio.h>
int main()
{
int num = 10; //十進位數
int b1 = num & 1; //獲取最低位
int b4 = num >> 3 & 1; //獲取第四位
printf("最低位為:%d\n", b1);
printf("第四位為:%d\n", b4);
return 0;
}
四、用數組實現二進位輸出
可以通過數組存儲二進位數的每一位,然後循環輸出數組中的每一項。
此時需要注意的是C語言中數組下標從0開始,因此需要倒序遍曆數組並輸出數組中的每一個元素。
#include <stdio.h>
int main()
{
int num = 10; //十進位數
int arr[32]; //用數組存儲二進位數的每一位
int i = 0;
printf("二進位輸出:");
while(num > 0) //將十進位數轉換成二進位數,存儲在數組中
{
arr[i] = num % 2;
num /= 2;
i++;
}
for(int j = i - 1; j >= 0; j--) //倒序輸出數組中的每一項
{
printf("%d", arr[j]);
}
printf("\n");
return 0;
}
五、用函數封裝實現二進位輸出
可以通過函數封裝上述代碼,方便調用以及實現多次調用。
函數實現過程與第二個示例類似,只是將其中的數字10變為函數參數,這樣可以根據需要任意輸出任意一個十進位數的二進位表示形式。
#include <stdio.h>
void printBinary(int num) //封裝函數,輸出任意一個十進位數的二進位表示形式
{
printf("二進位輸出:");
for(int i = 31; i >= 0; i--)
{
printf("%d", num >> i & 1);
}
printf("\n");
}
int main()
{
int num = 10; //十進位數
printBinary(num);
return 0;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/257690.html
微信掃一掃
支付寶掃一掃