一、用 C 語言撰寫一個函式 void bit_pattern(unsigned num),它能將一個 32-bit 整數數值 0 與 1 的 bit pattern 列印出來。例如數值是 444 所列印出來的 bit pattern 應 該是 00000000 00000000 00000001 10111100?
詳解 (共 4 筆)
詳解

詳解
樓上是用C++來寫,題目說要用C語言, 可以用C++來寫嗎?
詳解
void bit_pattern(unsigned num){ int a=0; int b=num/2; if(num%2==0) a=0; if(num%2==1) a=1; while(b!=1){ a=b%2+a; b=b/2; } a=b+a; }
詳解
#include <stdio.h>
void bit_pattern(unsigned num) {
for (int i = 31; i >= 0; i--) {
unsigned mask = 1 << i;
printf("%u", (num & mask) ? 1 : 0);
if (i % 8 == 0) {
printf(" "); // 每8位輸出一個空格,方便閱讀
}
}
printf("\n");
}
for (int i = 31; i >= 0; i--) {
unsigned mask = 1 << i;
printf("%u", (num & mask) ? 1 : 0);
if (i % 8 == 0) {
printf(" "); // 每8位輸出一個空格,方便閱讀
}
}
printf("\n");
}
int main() {
unsigned num = 444;
bit_pattern(num);
return 0;
}
這個函數bit_pattern接受一個無符號整數作為參數,使用一個迴圈從第31位(最高位)到第0位(最低位)遍曆每一位。在每次迭代中,它使用一個掩碼mask來選定當前位(通過1 << i將1左移i位),然後使用按位與操作&來確定該位是否為1。如果當前位是1,則列印1;如果是0,則列印0。為了易於閱讀,每8位之後加一個空格。
unsigned num = 444;
bit_pattern(num);
return 0;
}
這個函數bit_pattern接受一個無符號整數作為參數,使用一個迴圈從第31位(最高位)到第0位(最低位)遍曆每一位。在每次迭代中,它使用一個掩碼mask來選定當前位(通過1 << i將1左移i位),然後使用按位與操作&來確定該位是否為1。如果當前位是1,則列印1;如果是0,則列印0。為了易於閱讀,每8位之後加一個空格。
當你運行這個程式並傳入444作為參數時,它會列印444的32位二進位表示,如題目所示:00000000 00000000 00000001 10111100。