无符号二进制数的算术运算

无符号二进制数的算术运算

本文内容参考自王达老师的《深入理解计算机网络》一书<中国水利水电出版社>

一、无符号二进制数的运算规则:

无符号二进制数的加、减、乘、除四则算数运算法则其实与十进制数的四则算数运算法则是一一对应的。如果你理解了十进制的四则算数运算法则,那么理解无符号二进制数的四则运算相对来讲就很简单了
–引用自王达老师《深入理解计算机网络》一书

  • 1、加法运算
    加法运算法则:0+0=0,0+1=1,1+0=1,1+1=10(10就表示进位,要向高位进1)。
    做二进制加法运算的时候,需要将两个二进制数右对齐(也就是从最低位开始对齐),数值大的放上面(通俗理解就是二进制位数多的放上面),数值小的放下面(通俗理解就是二进制位数少的放下面),同时保证两数的每一位二进制位也对齐,如果两个二进制位仅有一位是1,相加结果为1,如果两个二进制位为0,则结果为0,如果两个二进制位均为1,则结果为10(10就相当于十进制中的2),就是向高位进1(也就是逢二进一规则),与十进制中的逢十进一意思一样。
    在进行二进制加减法运算时,最关键的一点就是逢二进一,而借1当2!如果你熟悉十进制的加减运算法则,那是逢十进一,借1当十。这样就会比较好理解,无符号的二进制运算法则就是将十进制中的10换成2。
    示例:计算(10010)B+(10010)B。(一定要注意两数是从最低位对齐!)
    // 二进制加法计算示例
       被加数  10010
       加数    11010
       结果   101100
       说明:
       最低位都是0,结果为0,
       倒数第二位,都是1,结果为10---这里记得向更高位进位1,
       倒数第三位都是0,结果是0,但是进位1,所以结果是1,
       倒数第四位分别是1和0,结果是1,
       倒数第五位都是1,结果是10,这里记得向跟高位进位1,
       没有倒数第六位了,直接写上倒数第五位进位的那个1,
       合起来,结果就是101100。
       实际上和十进制的运算规则完全一致。
       只是你需要习惯将10改成2。
    
  • 2、减法运算
    减法运算法则:1-1=0,1-0=1,0-0=0,0-1=-1(这里记得需要向最高位借1)。
    做二进制加法运算的时候,需要将两个二进制数右对齐(也就是从最低位开始对齐),数值大的放上面(通俗理解就是二进制位数多的放上面),数值小的放下面(通俗理解就是二进制位数少的放下面),同时保证两数的每一位二进制位也对齐。如果两个相减的二进制位同为0或者1,则结果为0,如果被减数的二进制位为1,减数的二进制位为0,则结果为1,如果被减数的二进制位为0,减数的二进制位为1,则需要向高位借1,此时是借1当2,与十进制中借1当10一个意思。
    示例:计算(111010)B+(101011)B。(一定要注意两数是从最低位对齐!)
    // 二进制减法示例
     被减数   111010
       减数   101011
       结果   001111
       说明:
       被减数最低位是0,减数是1,这个时候,被减数需要向高位借1,
       结果为1,
       被减数倒数第二位是1,但是被最低位借了1,所以实际上是0
       ,减数是1,这个时候,被减数需要继续向倒数第三位借1,
       结果为1,
       被减数倒数第三位是0,但是被倒数第二位借了1,所以实际上是1,
       减数是0, 结果为1,
       被减数倒数第四位是1,但是被倒数第三位借了1,所以实际上是0,
       减数是1,结果为1,
       被减数倒数第五位是1,但是被倒数第四位借了1,所以实际上是0,
       减数是0,结果为0,
       被减数最高位是1,这个时候并没有被借位,所以是1,减数是1,
       结果为0。
    
  • 3、乘法运算
    乘法运算法则:0 * 0=0,0 * 1=0,1 * 0=0,1 * 1=1
    只有当两个相乘的二进制数都为1时,相乘的结果才为1,两个相乘的二进制数中只要有一位为0,结果就是0,这与十进制中的乘法运算法则是一样的。
    乘法运算法则中,乘数的每一位要与被乘数的每一位分别相乘,而不仅仅是对应位相乘,而且乘数的每一位与被乘数的每一位相乘的结果的最低位要与对应的被乘数位上下对齐,规则与十进制是一样的。
    示例:计算(1010)B+(101)B。(一定要注意两数是从最低位对齐!)
     // 二进制乘法示例
     被乘数   1010
        乘数   101
        过程:首先用乘数的最低位去乘以被乘数的每一位,得出的结果:
        1010
        然后用乘数的倒数第二位再去乘以被乘数的每一位,得出的结果:
        0000
        最后再用乘数的倒数第三位去乘以被乘数的每一位,得出的结果:
        1010。
        这里得出了3个结果,这三个结果的排列是有讲究的,必须是
           1010
         0000
       1010
       第一个结果的最低位要与成熟的最低位对齐,
       第二个结果的最低位要与乘数的倒数第二位对齐,
       第三个结果的最低位要去乘数的最高位对齐!
       然后按照这种对齐格式,将这三个结果相加,
       得出最后相乘的结果(相加的规则参照加法运算):
       110010
    
  • 3、除法运算
    除法运算法则:当被除数大于除数时,商是1,当被除数小于除数时,商是0,这个与十进制的除法类似,因为二进制只有0和1,因此它的上也只能是0和1,你不要整出2,3,4,5,6,7,8,9来了。
    示例:计算(11001)B+(101)B。
      // 二进制除法计算
       除数  101     被除数 11001
       说明:
       因为除数是101三位,所以我们先看被除数的前三位:110,
       110明显比101更大,所以上商先上1,那么就变成了
       11001
       101
       0010
       这里的操作与十进制是一样的,对齐的相减,
       未涉及的下一位直接写,
       结果是10,10明显比101更小,所以商上0,
       最后还有一位1,所以是101,101刚好和101完全相同,
       所以商上1。
       最后得出的商是:101。
       实际上你需要注意的是,二进制只有0和1,
       而十进制有0-9,运算步骤是类似的。
    
    在此,再次感谢王达老师的《深入理解计算机网络》一书对本文的启发!

PS:时间有限,有关计算机基础的内容会持续更新!今天就先写这么多,如果有疑问或者有兴趣,可以加QQ:2649160693,并注明CSDN,我会就博文中有疑义的问题做出解答。同时希望博文中不正确的地方各位加以指正!

猜你喜欢

转载自blog.csdn.net/ruidianbaihuo/article/details/87905550