阿摩線上測驗 登入

申論題資訊

試卷:106年 - 106年公務人員普通考試-程式設計概要#63225
科目:程式設計
年份:106年
排序:0

申論題內容

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

詳解 (共 4 筆)

詳解 提供者:每個結果都是確定的,是你在投生之前自己做出的選澤

5331872-6261f9a32fe86.jpg

詳解 提供者:梅川依芙

樓上是用C++來寫,題目說要用C語言, 可以用C++來寫嗎?

詳解 提供者:Tony Chung

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; }

詳解 提供者:hchungw
#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");
}
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位之後加一個空格。
當你運行這個程式並傳入444作為參數時,它會列印444的32位二進位表示,如題目所示:00000000 00000000 00000001 10111100。