首页 > 编程知识 正文

负数原码反码补码转换,反码就是原码的绝对值的补码

时间:2023-05-03 12:14:53 阅读:174669 作者:4684

原码、反码、补码的主要应用是计算机二进制加法的层面,学习的时候要摒弃一些必须理解基础定义的执念。 不这样做的话,会一直陷入思考。 思考。

首先看图,介绍什么是原码、反码、辅助码

十进制原代码反码完成代码1000000001000000001000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

3358www.Sina.com/即符号,加为0,减为1,符号中包含的数为原码

符号+数值即整数本来的值,没有符号。

例如,十进制的1用二进制写0000 0001。 这里,左边第一位的0是符号位,并不表示具体的数。 只表示那个数是正是负。 0为正,1为负,接下来的7位表示具体的数值。

明确源代码后,再说反码和补码很简单。

符号,顾名思义,与原始代码相反,但这有相反的规则。

第一,正数反向代码是原始代码。

第二,负数的反码必须相反,否则为第一位为符号位。

补数在书中是指原代码除了码位以外取反末位加1,如果有反码的概念就很简单了。 补数为数值。 当然正数不变。

反码

原代码:第1位的符号位,其他为数值。 编码比特由0,1表示,0是正数,1是负数。

逆符号:正数的逆符号为原符号,负数的逆符号,符号比特不变,数值分别取逆。

补数:正数的补数为原码、负数的补数、反码的最后一位加1。

比较一下开头的表,会一目了然吗?

如果还不够,请举一个简单的例子来演示这些代码是如何进行加法运算的。 我想您一看就知道了。

源代码反码完成代码1 1 0000 0001 0000 0001

=0000 0010

=2

0000 0001 0000 0001

=0000 0010

=2

0000 0001 0000 0001

=0000 0010

=2

1(-1 ) 0000 0001 1000 0001

=1000 0010

=-2

0000 0001 1111 1110

=1111 1111

=源代码1000 0000

=-0

0000 0001 1111 1111

=0000 0000

=0

-1(-1 ) 1000 0001 1000 0001

=0000 0010

=2

1111 1110 1111 1110

=1111 1100

=源代码1000 0011

=-3

1111 1111 1111 1111

=1111 1110

=源代码1000 0010

=-2

从上表中可以看出,作为两个正数进行加法运算时,原代码的逆代码和辅助代码都得到了正确答案,但是如果将正数和负数相加,则原代码的运算明显错误,逆代码的运算勉强正确,但最终为0 以及符号位是不变的,仅数值部分取反

补数如此出色,让我们再学习两个与之相关的概念:

1 .模拟运算

教材模拟运算的例子非常容易理解,一个时钟是典型的模拟运算系统,其模拟量为12。

通过模拟运算、加法运算实现减法运算。

钟表不会像10点-6点那样逆向走。 也就是说,我不会做减法的10-4。 加法该怎么办? 这4的补数是8,10加上4的补数8,可以得到18点即6点。

计算机引入了这个概念,用加法做了减法。 计算机的模型是什么? 仔细看看计算机的构成吧。 有8位、16位、32位和64位处理器。 这个位,其实是模数。

例如,8比特的计算机表示补数的位数为8,类型为。

我们知道模子之后,怎么计算?

例题:补数的位数为8,求1101100和-1101100的补数。

首先,这个1101100是正数。 如上所述,正数的源代码的反码完成都是相同的,所以不需要进行运算。 只要补上8位数就行了。 向左补充哦。 别往右走。 1101100是7位数,向左补充1位数就可以了。 正数为0,负数需要补充1、2位、3位、4位时,除法符号的位数都向左补0即可。

解: 1101100的补数是01101100

-1101100的补码=-1101100  

                                 =100000000-1101100   

                                 =10000000+1000000-1101100

                                 =10000000+(10000000-1101100)

                                 =1000000+1111111+1-1101100

                                 =1000000+(1111111-1101100)+1

                                 =10010100(mod )

首先拆分为二进制的8位数,两个10000000,再把其中一个拆为二进制的7位数与1101100做运算,做运算时可看到1111111-1101100,其实得到的就是1101100的反码。

由此可以清楚推论出文章开头关于负数补码的运算,符号位取1,数值部分各位取反,末位加1.

2.溢出

溢出就是计算量过大超出了当前的位数,比如计算机只有8位,结果运算结果有9位,只能抛去高位的数,但剩下的低位数并不能表示你运算结果,也就是运算错误。

综上所述,补码的突出优点:

1.与原码和反码相比,数0的补码表示形式唯一。

2.补码运算是一种模运算系统,因而可以用加法实现减法运算,且符号位可以和数值位一起参加运算。

3.与原码和反码相比,补码多表示一个最小负数。

4.与反码相比,不需要通过循环进位来调整结果。

现代计算机中带符号整数都用补码表示,故n位带符号整数可表示的数值范围为-~(-1)。例如,8位带符号整数的表示范围为-128~+127.

计算机组成原理

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。