导引:
生活中一周可用7进制表示,一分钟可用60进制表示,断电和通电可用0和1二进制表示。
预备知识
所有数字在计算机底层都是以二进制形式存在的,并且以补码的形式保存所有的整数。原码直接将一个数值换算成二进制数正数的补码和原码完全相同,负数的补码是其反码加1;反码是对原码按位取反,最高位保持不变(最高位是符号位,如果补码的最高位是1,该数是负数;如果补码的最高位是0,该数是负数)。
十进制计数规则
① 十进制用十个数计数,基数是10
② 用0,1,2,3,4,5,6,7,8,9表示
③ 逢10进1(低位变成0,高位加1),借1当10
比如66-59,个位上6-9不够减,向高位借1当做10,即(10+6)-9 = 7,然后高位6-1-5 = 0,所以结果是7。
二进制计数规则
① 用二个数表示,基数是2
② 用0,1表示
③ 逢2进1(低位变成0,高位加1),借1当2
比如0-1不够减,把0看成是00向高位借1当做2,即(2+0)-1 = 1,只不过二进制中没有负数的说法。
十进制从右往左依次是一位、十位、百位、千位、万位...
二进制从右往左依次是一位、二位、四位、八位、十六位...(这个主要是用十进制的读法)
如下图所示:
十进制 | 二进制 | 十进制 | 二进制 |
---|---|---|---|
0 | 0 | 9 | 1001 |
1 | 1 | 10 | 1010 |
2 | 10 | 11 | 1011 |
3 | 11 | 12 | 1100 |
4 | 100 | 13 | 1101 |
5 | 101 | 14 | 1110 |
6 | 110 | 15 | 1111 |
7 | 111 | 16 | 10000 |
8 | 1000 | 17 | 10001 |
④ 运算规则
1+0 = 1;1+1 = 10(逢2进1);0+0 = 0
1-1 = 0;1-0 = 1;0-1 = 1(借1当2)
十进制和二进制的转化
- 十进制正整数转化为二进制数(相当于求该数的补码)
除二取余,然后倒序排列,高位补零。也就是说,将正的十进制数除以二,得到的商再除以二,依次类推直到商为零或一时为止,然后在旁边标出各步的余数,最后倒着写出来,高位补零。
计算机内部表示数的字节单位是定长的,如8位,16位,或32位。所以,位数不够时,高位补零。这里用8位来表示计算机内部的字节单位
如:(10)27 = (2)11011
2. 十进制负整数转化为二进制数
如(10)-27 = (2)11100101
由1可知27的原码: 0 0 0 1 1 0 1 1
按位取反得反码: 1 1 1 0 0 1 0 0
补码: 1 1 1 0 0 1 0 1
3. 正整数二进制转化为十进制数
首先将二进制数补齐位数,首位如果是0就代表是正整数,如果首位是1则代表是负整数。 先看首位是0的正整数,补齐位数以后,将二进制中的位数分别将下边对应的值相乘,然后相加得到的就为十进制。
如:(2)11011 = (10)27
首先补齐位数得:00011011(高位是0,表示正数)
4. 负整数的二进制转化为十进制
如:(2)10110110 = (10)-74
因为已经是8位了,高位就不必再用0补齐,最高位是1,则该数是一个负数
补码:10110110
反码:10110101
原码:01001010
八进制和二进制的转化
- 二进制转化为八进制
3位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)。
例如:(2)110010110 = (8)626
2. 八进制转化为二进制
一个八进制的位拆分成一个三位的二进制数
八进制数通过除2取余法,得到二进制数,每个八进制位对应3个二进制位,不足时在最左边补零。
例如:(8)256 = (2)10101110
二进制与十六进制的转换
1. 二进制转十六进制
与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)
例如:(2)1001 1100 1101 = (16)9CD
2. 十六进制转二进制
十六进制数通过除2取余法,得到二进制数,每个十六进制位对应4个二进制位,不足时在最左边补零。
一个十六进制的位拆分成一个四位的二进制数
例如:(16)238 = (2)10 0011 1000
十进制与八进制与十六进制之间的转换
1. 十进制转八进制或者十六进制有两种方法
第一:间接法—把十进制转成二进制,然后再由二进制转成八进制或者十六进制。
第二:直接法—把十进制转八进制或者十六进制按照除8或者16取余,直到商为0为止。
例如: (10)245 = (8)365
(10)265 = (16)109
2. 八进制或者十六进制转化为十进制
把八进制、十六进制数按权展开、相加即得十进制数。
例如:(8)234 = (10)156
(16)35 = (10)53
十六进制与八进制之间的转换
八进制与十六进制之间的转换有两种方法
第一种:他们之间的转换可以先转成二进制然后再相互转换。
第二种:他们之间的转换可以先转成十进制然后再相互转换
进制的对应表:
十进制 | 二进制 | 八进制 | 十六进制 | 十进制 | 二进制 | 八进制 | 十六进制 |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 9 | 1001 | 11 | 9 |
1 | 1 | 1 | 1 | 10 | 1010 | 12 | A |
2 | 10 | 2 | 2 | 11 | 1011 | 13 | B |
3 | 11 | 3 | 3 | 12 | 1100 | 14 | C |
4 | 100 | 4 | 4 | 13 | 1101 | 15 | D |
5 | 101 | 5 | 5 | 14 | 1110 | 16 | E |
6 | 110 | 6 | 6 | 15 | 1111 | 17 | F |
7 | 111 | 7 | 7 | 16 | 10000 | 100 | 10 |
8 | 1000 | 10 | 8 | 17 | 10001 | 101 | 11 |