進制轉換是計算機基礎核心知識,C 語言通過格式化輸出與位運算提供多種實現路徑。本文系統講解標準庫函數與手動算法兩種方案,附帶完整可運行代碼。
利用 printf 格式控制符直接輸出不同進制:
void decimalismToOther() {
int num = 0;
printf("please input a decimalism number: ");
scanf("%d", &num); // 十進制輸入
printf("the hex number is: %x \n", num); // 十六進制
printf("the octal number is: %o \n", num); // 八進制
printf("the nosigned number is: %u \n", num); // 無符號整數
// 科學計數法與格式化輸出
printf("the exponent number is: %e \n", 1000.0);
printf("the float number is: %-10.1f\n", 100.0f); // 左對齊
}
通過取模與除法分解,存入數組再逆序輸出:
// 十進制轉二進制核心算法
void decimalismToBinary(int num) {
int binary[32] = {0}; // 32位整數足夠存儲
// 從低位到高位分解
for(int i=0; i<32; i++) {
binary[i] = num % 2;
num = num / 2;
}
// 逆序輸出(高位在前),每4位分組
printf(" the binary of the number is: ");
for(int j=31; j>=0; j--) {
printf("%d", binary[j]);
if(j%4 == 0) printf(" "); // 可讀性分組
}
printf("\n");
}
%d 十進制、%o 八進制、%x 十六進制%d/%o/%x/%unum >> 1 等價 num / 2,num & 1 等價 num % 2decToBase(num, base) 函數支持 2-36 進制INT_MIN 轉換邊界情況