目前计算机对数据的表示方式,有十六进制、十进制、八进制与二进制。
简单的自己算,难的都用计算机
一、 如何理解它们的区别?
0xA或AH
10或10D
012或12O
0b1010或1010B
二、 在C语言中怎么表示这些进制呢?
十六进制:int a = 0xA; // 0x前缀
十进制: int a = 10;
八进制: int a = 012; // 0前缀
C语言中没有 “二进制数”这种类型,所以没办法直接定义,且C语言中无法直接用“0b”这样的格式表示二进制数。
三、 十六进制与二进制相互转换
在嵌入式开发中经常需要对十六进制与二进制进行转换
如何快速的转换2/16进制? 首先记住8 4 2 1 ——>二进制权重
将二进制0b01101110101转换成十六进制:将二进制从右到左,每四个分成一组: 四变一
结果就是0x375。
将十六进制0xABC1转换成二进制:将十六进制从右到左,每个分成四位: 一变四
结果就是1010 1011 1100 0001。
四、八进制与二进制相互转换
将八进制转换成二进制
核心:一位变三位
将二进制转换为八进制
核心:三位变一位
五、十进制与二进制相互转换
将十进制转换为二进制
核心:短除法(除2,有余写1,无余写0)
将二进制转换为十进制
核心:位权展开法
六、C语言进制的显示
16进制,使用0x
8进制,使用0开头
2进制,使用0b开头