数据的表示和计算
2.1 数制与编码
2.1.1 进位计数制及其相互转换
在计算机内部,所有信息都是用二进制编码的,原因如下:
- 二进制只有两种状态,易于用物理器件实现(如高低电平)。
- 二进制与逻辑值“真/假”对应,便于逻辑运算。
- 二进制编码和运算规则简单,可通过逻辑门电路方便实现。
常用进位计数制
- 二进制:基数为2,数码0/1,逢二进一。后缀B(Binary)。
- 八进制:基数为8,数码0~7,逢八进一。后缀O(Octal)。
- 十六进制:基数为16,数码0
9、AF,逢十六进一。后缀H(Hexadecimal)或前缀0x。 - 十进制:基数为10,数码0~9,逢十进一。后缀D可省略。
进制转换
1. 二进制 ↔ 八进制/十六进制
- 二进制转八进制:从小数点开始,整数部分向左,小数部分向右,每3位一组(不足补0),每组转换为1位八进制数。
- 二进制转十六进制:每4位一组转换为1位十六进制数。
- 反向转换:每位八进制(十六进制)转换为3位(4位)二进制。
2. 任意进制 → 十进制
按权展开相加法:将各位数码与位权相乘后求和。
例:
3. 十进制 → 任意进制
- 整数部分:除基取余法。除以基数,取余数为当前位(从低位到高位),商继续除,直到商为0。
- 小数部分:乘基取整法。乘以基数,取整数部分为当前位(从高位到低位),小数部分继续乘,直到积为1.0或达到精度。
注意:十进制小数不一定能用二进制精确表示(如0.3),但任意二进制小数都可用十进制精确表示。