进制转换(2进制|8进制|16进制)

创建时间:2022/1/11 19:54
更新时间:2022/3/30 14:19
作者:gi51wa2j
标签:bingo, 计算机原理, 正文

目前计算机对数据的表示方式,有十六进制、十进制、八进制与二进制。
简单的自己算,难的都用计算机

一、 如何理解它们的区别?

  • 十六进制,逢十六进一,每一位由0~F组成,习惯用0x前缀表示或用H后缀表示
0xA或AH
  • 十进制,逢十进一,每一位由0~9组成,无前缀或用D后缀表示
10或10D
  • 八进制,逢八进一,每一位由0~7组成,习惯用0(数字0)前缀表示或用O(字母O)后缀表示
012或12O
  • 二进制,逢二进一,每一位由0~1组成,习惯用0b前缀表示或用B后缀表示
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开头