但凡有接触计算机学科的,肯定对原码反码补码都不陌生。因为这是一些比较基础,但又是必须掌握的一个知识点。
这些码是什么?
这些码是八位二进制码,每一位码的取值只有机器能识别的0和1,这便是他们的真身。比如说十进制的25,其原码是 0001 1001。正数的原码反码补码
正数的原码=反码=补码。如何区分正负数?其中最高代表的符号位。最高位为0,代表正数。最高位是1,代表负数。这是规定,没什么好说。也不会有太多的疑惑。负数的原码反码补码
负数的原码就不用多解释了。
负数的反码: 将最高位的符号位以外的数,全部取反,这样就得到了负数的反码。
负数的补码:将负数的反码进行加一操作,得到的结果便是负数的补码。负数的补码为什么和正数的不一样?
我们不妨假设一下如果负数的和正数一样。
举个例子来说吧:大家都知道 5+(-5)=0
0的二进制原码为: 0000 0000
5的二进制原码为: 0000 0101
-5的二进制原码为:1000 0101
-5的二进制反码为:1111 1010
-5的二进制补码为:1111 1011
那么按照这个规律,得到的结果是1000 1010等于-10,与事实结果的0相反。
反过来推证:
要使结果为0,那么-5的二进制应该为多少?
结果是-5在内存中应该为:1111 1011。
只有这样,计算机在执行加上一个负数才不会发生数据乱码的问题。
所以在教科书上会有负数在硬盘或内存中以二进制补码的形式存在。