C语言 进制
进制:
按权展开求和
十进制(0~9):123.45 = 110^2 + 210^1 + 310^0 + 410^-1 + 5*10^-2
二进制(0~1):1010.1 = 2^3+2^1+2^-1=10.5
八进制(0~7):123 = 18^2 + 28^1+3 = 83
十六进制(0~9,a~f/A~F):123=116^2+216+3=256+35=291
人(十进制) 计算机(二进制)
人能直接使用二进制吗? 01011010111101101111010110101011,容易看错, 人不能直接使用
二进制能转成十进制吗? 01011010111101101111010110101011,计算量太大
八进制:把二进制数,合三为一 .例如 001 011 010 111 101 101 111 010 110 101 011
1 3 2 7 5 5 7 2 6 5 3
13275572653 (历史遗留问题,CPU中央处理器32,64位,都是4得倍数)
十六进制:把二进制数,合四为一,例如0101 1010 1111 0110 1111 0101 1010 1011
5 A f 6 F 5 a B
十六进制必须掌握:二进制合四为一为十六进制,十六进制1个拆成4个二进制
表示方法:八进制用0开头,十六进制用0x或0X开头
0x10表示十六进制的10,转二进制为 0001 0000 ,转十进制为16,转八进制为020
整型:4字节,1字节=8位,1位就是一个0或者1
int main()
{
int a = 20;
int b = 024;//0开头的数据表示八进制数字
int c = 0x14;//0x开头的数据表示十六进制
int d = 0b10100;//0b开头的数据表示二进制 (新标准增加的)
printf("%d,%d,%d,%d\n",a,b,c,d);
return 0;
}
int main()
{
int a = 0x10;//十六进制
int b = 20;//十进制
int c = 020;//八进制
printf("%d,%d,%d\n",a,b,c);//16,20,16
printf("%x\n",a);//%x:输出十六进制数字
printf("%x\n",20);//14,
printf("%c,%d,%x\n",65,65,65);//'A',65,41
printf("%x,%X\n",20000,20000);//4e20,4E20
return 0;
}