C语言的进制
在计算机科学中,进制是一种计数方法,用于表示数字和字符,C语言提供了多种进制表示方式,包括二进制、八进制、十进制和十六进制,这些进制可以通过不同的前缀来表示,例如二进制的前缀是"0b",八进制的前缀是"0",十进制的前缀是省略,十六进制的前缀是"0x"。
1、二进制
二进制是计算机最基本的计数方法,它只有两个数字:0和1,在C语言中,二进制数可以以"0b"为前缀表示,
unsigned int binary_num = 0b1010; // 二进制数1010对应的十进制数为10
2、八进制
八进制是一种基于8的计数方法,它有8个数字:0到7,在C语言中,八进制数可以以"0"为前缀表示,
unsigned int octal_num = 0123; // 八进制数123对应的十进制数为83
需要注意的是,八进制数的前缀必须是数字0,而不是字母o。
3、十进制
十进制是我们日常生活中最常用的计数方法,它有10个数字:0到9,在C语言中,十进制数不需要任何前缀,
unsigned int decimal_num = 123; // 十进制数123对应的十进制数为123
4、十六进制
十六进制是一种基于16的计数方法,它有16个数字:0到9和A到F(或a到f),在C语言中,十六进制数可以以"0x"或"0X"为前缀表示,
unsigned int hexadecimal_num = 0x1A; // 十六进制数1A对应的十进制数为26 unsigned int hexadecimal_num2 = 0XFF; // 十六进制数FF对应的十进制数为255
需要注意的是,十六进制数的前缀必须是数字0或字母x(大小写均可),而不是字母O或X。
除了以上四种基本进制外,C语言还支持其他进制的转换和运算,以下是一些常用的进制转换和运算函数:
1、int dec(unsigned int x, int base)
:将一个给定基数的数字转换为十进制数,参数x是要转换的数字,base是数字的基数。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int main() { unsigned int num = 0b1010; // 二进制数1010对应的十进制数为10 int base = 2; // 基数为2,即二进制数 int result = dec(num, base); // 将二进制数转换为十进制数 printf("The decimal representation of binary number %u is %d ", num, result); // 输出结果:The decimal representation of binary number 10 is 10 return 0; }
2、unsigned int dec(int x, int base)
:将一个给定基数的数字转换为十进制数,参数x是要转换的数字,base是数字的基数。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int main() { int num = 0123; // 八进制数123对应的十进制数为83 int base = 8; // 基数为8,即八进制数 unsigned int result = dec(num, base); // 将八进制数转换为十进制数 printf("The decimal representation of octal number %o is %u ", num, result); // 输出结果:The decimal representation of octal number 123 is 83 return 0; }
3、unsigned int dec(unsigned int x, int base)
:将一个给定基数的数字转换为十进制数,参数x是要转换的数字,base是数字的基数。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int main() { unsigned int num = 0x1A; // 十六进制数1A对应的十进制数为26 int base = 16; // 基数为16,即十六进制数 unsigned int result = dec(num, base); // 将十六进制数转换为十进制数 printf("The decimal representation of hexadecimal number %x is %u ", num, result); // 输出结果:The decimal representation of hexadecimal number 1a is 26 return 0; }