二进制学习总结

二进制学习总结

 

            关于二进制的运算,太长时间不碰就容易忘!于是最近又重新看了一下。为了加深印象,还是决定写个总结。
首先来说说二进制与 10进制的换算,这是平时用的最多的一个。

1. 二进制的无符号和 10进制之间的换算。
   1.1 二进制与 10进制无符号整形之间的换算:
例如:二进制 1010,它的十进制表现就是 10,换算过程如下 :
       1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0 = 10
注解: 2^3:标示 23次方。
   1.2 10进制转换二进制:
       10 / 2 = 5 0
       5  / 2 = 2 1
       2  / 2 = 1 0
最后 1 / 2,因为 12小,所以余数取它本身等于 1.  现在将所有余数从下往上拼起来,最后结果等于 1010。那么 10的二进制表现就是 1010
   1.3 如果将 10改成 10.75,那么又该如何算呢?整数位的计数方式同上,小数位的计算略有不同,方法是提取小数位: 0.75乘以 2,取整数位。如果整数位等于 1,则取 1,然后减 1,继续乘以 2,直到小数位都为 0为止。如 :
       0.75 * 2 = 1.50   1
       0.50 * 2 = 1     1
最后结果就是 0.11,那么, 10.752进制表示: 1010.11
   1.4 如何将 1010.11又转化回来呢?例如 :
       1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0 + 1 / (2^1) + 1 / (2 ^ 2) = 10.75
2. 二进制的运算:
二进制的进位规则和十进制不同,十进制是逢十进一,而二进制则是逢二进一。
二进制的借位规则也和十进制不同,在进行减法运算时,十进制在运算借位范围是 0-9. 而二进制只有 0-1
加法:
十进制: 10 + 10 = 20
二进制 : 00001010 + 00001010 = 00010100 答案正确。

减法:
     a. 十进制: 11 - 9 = 2
二进制: 00001011 - 00001001 = 00000010   答案正确。
     b. 十进制: 10 - 9 = 1
二进制: 00001010 - 00001001 = 00000001   答案正确。
b中, 00001010 - 00001001 = 00000001 涉及到了二进制的借位情况。这无疑就增加了减法的运算的复杂度了!这里将运算步骤分解一下:
第一位: 0 - 1 = 1 因为 01小,这里就需要降一位,二进制里面 0降一位位 1,反之亦然。
第二位: 1 - 0 = 0 因为第一位降了一位,是向第二位借的,所以导致了第二位也要跟着降一位,所以 1就变成了 0,算式为: 0 - 0 = 0 。结果为 0.
第三位: 0 - 0 = 0 。因为第二位有位可借,所以第三位不用跟着将位了。
后面的运算就按照正常运算流程走下去就行了。
如果数字需要借位的越多,就会导致运算越复杂,如 :00110000 - 00010111 = 00011001  
如果结果为负数的情况下 00001000-00001100=….1111111100 . 结果将会无止境的借位下去。
如何解决这个问题,在后面将讲解。
乘法和除法:
运算规则除了进位不同其它的和十进制相同:
      000001010 * 000001010 = 01100100
      000001010 / 000001010 = 1
3. 二进制的原码,反码,补码
这里以 8位二进制为例,来描述它们。 8位二进制的取值范围为 :(-127~127).
       3.1. 原码的作用主要是为了有符号二进制数,而存在的。表现方式是在二进制的最高位用 10来表示着个数字是正数,还是负数!   1表示负数, 0表示正数。
例如: 108位二进制: 00001010, -10的二进制: 10001010 。原码在进行加法的时候比较方便,进行减法操作比较复杂 ,因为它还需要判断当前进行到底是加法,还是减法运算,需要两套计算器,来处理。乘除法操作也非常简单直观!直接将符号位之前的数字,运算完了,把符号位加到后面就行了!
     3.2 反码和补码
反码主要是为了解决原码的减法运算的复杂度。它的目的是将所有减法都按照加法运算来计算,这样计算加减法,只需要一套加法计算器就行了。反码其实也很简单,就是将二进制中的每一位都取反,然后再去计算。注意,反码只针对负数,正数的反码就是它本身。
如:十进制: 10
二进制原码: 00001010
二进制反码: 00001010

十进制: -10
二进制原码: 10001010
二进制反码: 11110101
计算方式为:
十进制: 10 +– 10 = 0  答案正确
二进制: 00001010 + 11110101 = 11111111  答案错误
在进行负数运算的时候,单单用反码还是不够的,还得加上补码,补码简单的理解就是在 :反码 + 1 = 补码。
如:
十进制: -10
二进制原码: 10001010
二进制反码: 11110101
二进制补码: 11110110
计算方式:
十进制: 10 + -10 = 0         答案正确
二进制: 00001010 + 11110110 = 0   答案正确

   结束语:
目前计算机运用的也是补码方式。基本上这次的总结就写到这里了!   HOHO,以后要是忘了,我就再来复习一下。如果有什么不对的地方,或者没有描述清楚的地方,可以给我灌水。

你可能感兴趣的:(二进制学习总结)