最佳答案
引言
在打算机科学中,进制转换是一个基本且重要的不雅点。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言语中的进制转换有了更深刻的懂得。控制这些进制转换技能,将有助于读者在编程现实中更好地处理数据。