二进制的计算(原码补码以及反码)

Posted _WILLPOWER_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二进制的计算(原码补码以及反码)相关的知识,希望对你有一定的参考价值。

带符号

5-2

0000 0101 -> 5
1000 0010 ->-2


然后两个数据都转为补码进行相加
正数的补码等于原码
负数的补码等于符号位不变,剩下的取反加一(算补码的时候符号位不参与计算)

0000 0101 + (加法需要符号位参与)
1111 1110


结果为
0000 0011 -> 3

因为结果为正数,所以不用再符号位不变取反加一

2-5

0000 0010 -> 2
1000 0101 ->-5


然后两个数据都转为补码进行相加
正数的补码等于原码
负数的补码等于符号位不变,剩下的取反加一(算补码的时候符号位不参与计算)

0000 0010 + (加法需要符号位参与)
1111 1011


结果为
1111 1101

因为结果为负数,所以需要符号位不变取反加一(不需要符号位参与)
结果为:1000 0010 ->-3

127+1

0111 1111 -> 127
0000 0001 ->1


然后两个数据都转为补码进行相加
正数的补码等于原码
负数的补码等于符号位不变,剩下的取反加一(算补码的时候符号位不参与计算)

0111 1111 + (加法需要符号位参与)
0000 0001


结果为
1000 0000

规定1000 0000是-128 ! 所以结果是-128

127+2

0111 1111 -> 127
0000 0010 ->2


然后两个数据都转为补码进行相加
正数的补码等于原码
负数的补码等于符号位不变,剩下的取反加一(算补码的时候符号位不参与计算)

0111 1111 + (加法需要符号位参与)
0000 0010


结果为
1000 0001

因为结果为负数,所以需要符号位不变取反加一(==不需要符号位参与)
结果为
1111 1111所以是-127

127+127

0111 1111 -> 127
0111 1111 ->127


然后两个数据都转为补码进行相加
正数的补码等于原码
负数的补码等于符号位不变,剩下的取反加一(算补码的时候符号位不参与计算)

0111 1111 + (加法需要符号位参与)
0111 1111


结果为
1111 1110

因为结果为负数,所以需要符号位不变取反加一(不需要符号位参与)
结果为
1000 0010所以是-2

以上是关于二进制的计算(原码补码以及反码)的主要内容,如果未能解决你的问题,请参考以下文章

二进制的计算(原码补码以及反码)

原码反码补码相关内容以及Java语言中是以哪一种码表示的

计算机中的原码,反码,补码,以及他们在内存中的存储形式。

原码反码补码详解

计算机基础知识_原码反码补码

原码,反码,补码