三种负数求补码方法[亲测有效]

三种负数求补码方法[亲测有效]首先通过一个表格简单介绍下什么是原码、反码、补码:(以八位二进制数为例):正数的原码、反码、补码等于它二进制的本身(以12为例)权值 128 64 32 16 8 4 2 1 原码 0 0 0 0 1 1 0 0 反码 0 0 0 0 1 1 0 0 补码 0 0 0 0 1 1 0…

大家好,欢迎来到IT知识分享网。

首先通过一个表格简单介绍下什么是原码、反码、补码:

(以八位二进制数为例):

正数的原码、反码、补码等于它二进制的本身(以12为例)

权值 128 64 32 16 8   4   2   1  
原码 0 0 0 0 1 1 0 0
反码 0 0 0 0 1 1 0 0
补码 0 0 0 0 1 1 0 0

 

而一个负数的原码就是在最高位(也就是符号位)写1,反码就是符号位为1,其余数字对原码取反,补码就是对反码的最后一位+1

权值 128 64 32 16 8   4   2   1  
原码 1 0 0 0 1 1 0 0
反码 1 1 1 1 0 0 1 1
补码 1 1 1 1 0 1 0 0

在计算机中,数字都是以二进制补码的方式存储。

 

采用补码表示法的特征(优势):

(1)补码表示法可以将符号位和其他位统一处理,同时减法也可以当作加法处理,简化运算规则,从而简化运算器的结构,即采用补码表示法的数字,不管是加法还是减法都可以用加法运算来实现;

(2)补码表示法相加时,如果最高位有进位,则进位被舍弃;

 

 

(一个字节有八位,为了简便现在以3位二进制举例:以十进制的数3为例)

3的二进制数为:011;而-3的二进制数为101;

做一下验算:

    011

+  101

—————

    1000

此时我们是以三位二进制数举例,加上最高位的1,已经达到了4位数,此时产生“溢出”进位,舍掉1后发现二进制的000在十进制中也的确表示0,即3+(-3)=0,因此-3的二进制的确为101;

 

 

接下来介绍求负数补码的三种办法

一、写出负数的原码,利用原码求补码

求负数的原码时(以-12为例),将最高位(符号位)变成1,其余位数不变(即10001100);

求负数的反码时,符号位不变(相对于负数的原码而言)其余位数取反,即11110011;

求负数的补码时,符号位不变,其余位数取反,并在最后一位加一(也可以说在求得反码后,在反码的末尾+1),即11110100;

二、先表示出其绝对值的原码(同样以-12为例)

|-12|=12;

12的二进制原码:00001100

我们可以从右向左扫描,遇到0直接抄下来,遇到第一个1也直接抄下来,从第一个1往后,所有的数字都取反,也就是11110100;

三(需要引入模的概念)、设需要求的负数为n,模为mod,dec=mod-|n|,则n的补码与dec相同;

什么是模?

从本质上说就是计算器在计算时产生溢出时的量,它的值在计算器中表示不出来,计算器只能表示出模的余数;

1.对于时钟来说,时钟的计量范围为0~11(共包含12个数),模=12;

     比如当前时间是0点,而表盘时针指向5点,想回正表盘有两个方法,1.逆时针旋转5h;2.顺时针旋转7h;也就是5-5=0或5+7=12(时钟模为12,表盘上12与0为同一位置),因此可以用时钟的前进来代替后退。

2.用一个字节(8位)的二进制表示一个数字时,其表示范围为0~2^8-1,其模为2^8;

接下来同样以四位二进制数情况下的-12为例求补码

此时n=-12;|n|=12;

dec=mod-12;由于是用四位二进制表示,因此表示范围为2^4=16.即mod=16;

dec=16-12=4;即在四位二进制数情况下,-12的补码与4的补码相同

 

  8 4 2 1
原码 1 1 0 0
补码 0 1 0 0

 

即0100

 

当用5位二进制数表示-12补码时,2^5=32,dec=32-12=20,即-12补码=20的补码

 

  16 8 4 2 1
原码 1 0 1 0 0
补码 1 0 1 0 0

 

即:10100

 

同样原理,在用6位、7位、8位的二进制数表示时(具体用几位表示,可以看你心情或者题目要求),方法一样,发现区别只是在高位多加一个1,当求8位时,高位补满1,发现最终结果为11110100,这个结果与前两种方法所得结果一样,因此是正确的~

 

 

 

 

 

 

 

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/24721.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信