首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言實現十進制轉二進制(16位分組顯示)完整代碼

     編輯:程式設計綜合問答

題目要求

  • 函數原型:void decimalToBinary(int num)
  • 輸入範圍:1~1023 的自然數,超出則輸出提示並返回。
  • 輸出格式:16 位二進制,每 4 位一空格(如 0000 0000 0001 1011)。

參考實現

#include <stdio.h>
#include <math.h>

#define BINARY_LEN 16

void decimalToBinary(int num) {
    if (num < 1 || num > 1023) {
        printf("不是正確的自然數\n");
        return;
    }
    for (int i = BINARY_LEN - 1; i >= 0; --i) {
        if ((i + 1) % 4 == 0 && i != 15) printf(" ");
        printf("%d", (num & (int)pow(2, i)) >> i);
    }
    printf("\n");
}

int main() {
    int input;
    while (1) {
        printf("請輸入1~1023的自然數,輸入-1退出: ");
        scanf("%d", &input);
        if (input == -1) break;
        decimalToBinary(input);
    }
    return 0;
}

關鍵點解析

  1. 位運算提取位值:(num & (1 << i)) >> i 獲取第 i 位(0 或 1)。
  2. 分組空格:當 (i+1) % 4 == 0 且非最高位時輸出空格。
  3. 邊界檢查:超出範圍直接返回,主循環以 -1 為哨兵退出。

擴展建議

  • 使用移位 1 << i 替代 pow(2,i) 提升效率。
  • 輸入非整數時需清理緩衝區防止死循環。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved