在此示例中,您將學(xué)習(xí)通過創(chuàng)建用戶定義的函數(shù)來將二進制數(shù)手動轉(zhuǎn)換為八進制,八進制數(shù)手動轉(zhuǎn)換為二進制。
要理解此示例,您應(yīng)該了解以下C語言編程主題:
在此程序中,我們將首先將二進制數(shù)字轉(zhuǎn)換為十進制。然后,十進制數(shù)字轉(zhuǎn)換為八進制。
#include <math.h>
#include <stdio.h>
int convert(long long bin);
int main() {
long long bin;
printf("輸入二進制數(shù): ");
scanf("%lld", &bin);
printf("%lld(二進制)= %d(八進制)", bin, convert(bin));
return 0;
}
int convert(long long bin) {
int oct = 0, dec = 0, i = 0;
//將二進制轉(zhuǎn)換為十進制
while (bin != 0) {
dec += (bin % 10) * pow(2, i);
++i;
bin /= 10;
}
i = 1;
//從十進制到八進制的轉(zhuǎn)換
while (dec != 0) {
oct += (dec % 8) * i;
dec /= 8;
i *= 10;
}
return oct;
}輸出結(jié)果
輸入二進制數(shù): 101001 101001(二進制)= 51(八進制)
在此程序中,八進制數(shù)首先會轉(zhuǎn)換為十進制。然后,將十進制數(shù)轉(zhuǎn)換為二進制數(shù)。
#include <math.h>
#include <stdio.h>
long long convert(int oct);
int main() {
int oct;
printf("輸入八進制數(shù)字: ");
scanf("%d", &oct);
printf("%d(八進制) =%lld(二進制)", oct, convert(oct));
return 0;
}
long long convert(int oct) {
int dec = 0, i = 0;
long long bin = 0;
// 將八進制轉(zhuǎn)換為十進制
while (oct != 0) {
dec += (oct % 10) * pow(8, i);
++i;
oct /= 10;
}
i = 1;
// 將十進制轉(zhuǎn)換為二進制
while (dec != 0) {
bin += (dec % 2) * i;
dec /= 2;
i *= 10;
}
return bin;
}輸出結(jié)果
輸入八進制數(shù)字: 51 51(八進制) =101001(二進制)