最佳答案
引言
在打算機科學中,進制轉換是一個基本且重要的不雅點。C言語作為一種廣泛利用的編程言語,供給了多種方法來實現差別進制之間的轉換。本文將深刻探究C言語中二進制、八進制跟十六進制之間的轉換技能,幫助讀者輕鬆控制這些進制轉換的奧秘。
基本知識
數制簡介
- 二進制(Binary):僅由0跟1構成,逢二進一。
- 八進制(Octal):由0-7構成,逢八進一。
- 十六進制(Hexadecimal):由0-9跟A-F構成(其中A-F分辨代表10-15),逢十六進一。
轉換道理
進制轉換的基本道理是「除基取余法」。比方,將十進制轉換為二進制,就是壹直將該數除以2,取餘數,直到商為0,然後將全部餘數倒序陳列。
二進制轉換
十進制轉二進制
#include <stdio.h>
void decimalToBinary(int num) {
if (num == 0) {
printf("0");
return;
}
int binary[32];
int i = 0;
while (num > 0) {
binary[i++] = num % 2;
num = num / 2;
}
for (int j = i - 1; j >= 0; j--) {
printf("%d", binary[j]);
}
}
int main() {
int num = 123;
decimalToBinary(num);
return 0;
}
二進制轉十進制
#include <stdio.h>
int binaryToDecimal(int num) {
int decimal = 0, base = 1;
while (num > 0) {
int temp = num % 10;
decimal += temp * base;
base = base * 2;
num = num / 10;
}
return decimal;
}
int main() {
int num = 1101;
printf("%d", binaryToDecimal(num));
return 0;
}
八進制轉換
十進制轉八進制
#include <stdio.h>
void decimalToOctal(int num) {
if (num == 0) {
printf("0");
return;
}
int octal[32];
int i = 0;
while (num > 0) {
octal[i++] = num % 8;
num = num / 8;
}
for (int j = i - 1; j >= 0; j--) {
printf("%d", octal[j]);
}
}
int main() {
int num = 123;
decimalToOctal(num);
return 0;
}
八進制轉十進制
#include <stdio.h>
int octalToDecimal(int num) {
int decimal = 0, base = 1;
while (num > 0) {
int temp = num % 10;
decimal += temp * base;
base = base * 8;
num = num / 10;
}
return decimal;
}
int main() {
int num = 173;
printf("%d", octalToDecimal(num));
return 0;
}
十六進制轉換
十進制轉十六進制
#include <stdio.h>
void decimalToHexadecimal(int num) {
if (num == 0) {
printf("0");
return;
}
int hex[32];
int i = 0;
while (num > 0) {
int temp = num % 16;
if (temp < 10) {
hex[i++] = temp;
} else {
hex[i++] = temp - 10 + 'A';
}
num = num / 16;
}
for (int j = i - 1; j >= 0; j--) {
if (hex[j] < 10) {
printf("%d", hex[j]);
} else {
printf("%c", hex[j]);
}
}
}
int main() {
int num = 255;
decimalToHexadecimal(num);
return 0;
}
十六進制轉十進制
#include <stdio.h>
int hexadecimalToDecimal(char hex[]) {
int decimal = 0, base = 1;
int len = strlen(hex);
for (int i = len - 1; i >= 0; i--) {
if (hex[i] >= '0' && hex[i] <= '9') {
decimal += (hex[i] - '0') * base;
} else {
decimal += (hex[i] - 'A' + 10) * base;
}
base *= 16;
}
return decimal;
}
int main() {
char hex[] = "FF";
printf("%d", hexadecimalToDecimal(hex));
return 0;
}
總結
經由過程本文的介紹,信賴讀者曾經對C言語中的進制轉換有了更深刻的懂得。控制這些進制轉換技能,將有助於讀者在編程現實中更好地處理數據。