二进制原码、反码、补码详解--习题

在这里插入图片描述
源码补码的运算规则
【1】在原码运算时,首先要把符号与数值分开。例如两数相加,先要判断两数的符号,如果同号,可以做加法,如果异号,实际要做减法,减后的差作为两数之和。和数的符号与绝对值较大的数的符号相同。两数相减也是一样,首先要判断两数符号,然后决定是相加还是相减,还要根据两数的大小与符号决定两数之差的符号。
【2】如果是补码运算则不存在符号与数值分开的问题。在补码运算时把符号位也
看成数值一起参加运算而且加法运算就一定是相加减法运算就一定是相减

【3】在计算机中对带符号的数进行加减时最好使用补码。
【4】一个正数和一个负数相加,结果一定不会溢出(因为结果的绝对值一定小于两个加数的绝对值,两个加数都表达出来了,结果一定能表达出来。) 所以,发生溢出的情况一定是符号相同的两个数相加。
分情况讨论:
–正+正–
符号位0,数位相加,如果结果的符号位变成1了,那一定是两个加数的最高位相加进上来的。
发生溢出。
–负+负–
符号位都是1,所以符号位一定会进位。数位相加,如果最后符号位是0,说明结果变成正的了,那一定是发生溢出了(负+负!=正)。

二进制原码、反码、补码详解

① 原码:

原码是指将最高位作为符号位(0表示正,1表示负),其它数字位代表数值本身的绝对值的数字表示方式。

例如:数字6 在计算机中原码表示为:0 000 0110

其中,第一个数字0是符号位,0表示正数,0 000110是数字6的二进制数据表示。

数字-6 在计算机中原码表示为:1 000 0110

以上是在8位计算机中的原码表示,如果在32位或16位计算机中,表示方法也是一样的,只是多了几个数字0而已。

例如,在32位 计算机中数字6 的原码表示为:00000000 0000 0000 0000 0000 0000 0110

在16位 计算机中数字6 的原码表示为:00000000 0000 0110

② 反码:

反码表示规则为:如果是正数,则表示方法和原码一样;如果是负数,符号位不变,其余各位取反,则得到这个数字的反码表示形式。

例如,数字6 在8位 计算机中的反码就是它的原码:00000110

数字-6 在 8位计算机中的反码为:11111001

③ 补码

补码是计算机表示数据的一般方式,其规则为:如果是正数,则表示方法和原码一样;如果是负数,则将数字的反码加上1(相当于将原码数值位取反然后在最低位加1)。

例如:数字6 在8位 计算机中的补码就是它的原码:00000110

数字-6 在8 位 计算机中的补码为:1111 1010

注意:0的反码、补码都为零

参考文献:
【1】https://blog.csdn.net/qhdhnbd110/article/details/82993503
【2】https://blog.csdn.net/skydcl/article/details/72638360
【3】https://www.docin.com/p-469250831.html

发布了67 篇原创文章 · 获赞 7 · 访问量 4951

猜你喜欢

转载自blog.csdn.net/qq_43042339/article/details/104104585