为了区分不同数制的表示数,在数字后面加上不同的字母来表示不同的进位制。
- B(Binary):表示二进制
- O(Octal)表示八进制
- D(Decimal)或不加表示十进制
- H(Hexadecimal)表示十六进制。
例如: ( 101011 ) B = ( 53 ) O = ( 43 ) D = ( 2 B ) H (101011)B = (53)O =(43)D = (2B)H (101011)B=(53)O=(43)D=(2B)H
二进制
-
符号位:最高位为符号位,0 为正,1 为负。
-
机器字长(n):采用 n 个二进制位表示数据。
-
十进制 to 二进制
整数:采用“除 2 取余,逆序排列,高位补0”。
- 取绝对值除2取余,直到商为0或1,余数倒序排列,高位补0。若整数为负数,则值为绝对值的补码。
例:机器字长为8。25 = 00011001,-25 = 1110 0111
纯小数:采用“乘 2 取整,顺序排列,低位补0”。
- 十进制小数乘以 2,得到的积,将积的整数部分取出;
- 再将剩余的小数部分继续乘以2,得到的积,再将积的整数部分取出;
- 重复操作,直至积中小数部分为0;若永远不能为 0,则按要求保留位数,进行取舍,为0舍去,为1向前进一位。
- 若小数存在整数部分,则整数与小数部门分开单独计算纯整数和纯小数的二进制,再将计算结果合并。
- 负数与整数相同取补码。
例如: ◊ \lozenge ◊ 为小数点位置,机器字长为 8,则 0.125 = 0 ◊ 00100000 0 \ \lozenge00100000 0 ◊00100000。
- 取绝对值除2取余,直到商为0或1,余数倒序排列,高位补0。若整数为负数,则值为绝对值的补码。
-
二进制 to 十进制
- 符号位(最高位)0 表示正数,1 表示负数。
- 负的二进制,最高位为 1,要先减 1 取反码再进行计算。
- 整数部分由低位到高位(右到左),分别乘以 2 的相应(由低位以0开始递增)次方,将得到的结果相加。
- 小数部分由高位到低位(左到右),分别乘以 2 的相应负(由高位以1开始递增)次方,将得到的结果相加。
- 整数
- 小数
八进制
十六进制
- 计算方式:逢16进1
- 个位数:用数字0-9和字母A-F表示(0,1,2,4,5,6,7,8,9,A,B,C,D,E,F)
- 对应十进制数:0-9对应0-9,A-F对应10-15(字母不区分大小写)。
- 计算方式:加减法的进/借位规则:逢16进1,借1当16
-
十六进制 to 十进制
- 十六进制数从低位到高位(即从右往左)计算,第0位的权值是16的0次方,第1位的权值是16的1次方,第2位的权值是16的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。
- 例:(2B)H转换为十进制的步骤如下:
-
- 第0位 B x 16^0 = 11
-
- 第1位 2 x 16^1 = 32;
-
- 读数,把结果值相加,11+32=43,即(2B)H = 43
十进制 to 十六进制
- 除16取余法: 除以16取余,逆序排列。即每次将整数部分除以16,余数为改位权上的数, 而商继续除以16,这个步骤一直持续下去, 知道商为0为止,读数为从最后一个余数起,一直到最前面的一个余数。
- 例:将十进制的(796)D转换为十六进制的步骤如下:
-
- 将商796除以16,商49余数为12,对应十六进制的C;
-
- 将商49除以16,商3余数为1;
-
- 将商3除以16,商0余数为3;
-
- 读数,因为最后一位是经过多次除以16才得到的,因此它是最高位,读数字从最后的余数向前读,31C,即 796 = (31C)H。
- 读数,因为最后一位是经过多次除以16才得到的,因此它是最高位,读数字从最后的余数向前读,31C,即 796 = (31C)H。