posts - 8,comments - 0,views - 1102

原码、反码和补码都可以作为计算机中数值的编码形式,而目前通用的是补码,那么为什么不是原码和反码呢?

1 计算方法

  原码、反码和补码的计算公式很容易理解,原码就是符号位+绝对值,正数的反码等于原码,负数的反码在原码的基础上,符号位不变,其余各位取反,补正数的补码等于原码,负数的补码等于其原码+1.

2 为什么要用补码作为计算机中数值的编码形式

  人脑最容易理解原码,人脑会自动识别符号位和绝对值位进行运算,但对于计算机电路,辨别符号位会让电路变得更复杂,因此就想到,如何让数值的符号位也参与运算?

  首先原码做不到这一点,1 - 1 = 0 = [00000001]原 + [10000001]原 = -2.

  于是出现了反码,1 - 1 = 1 + (-1) = [00000001] + [10000001]原 = [00000001]反 + [11111110]反 = [11111111]反 = [10000000]原 = -0,绝对值对了,但符号位似乎不太对,原因在于0在反码中有两种表示方法.

  于是,补码出现了,1 - 1 = 1 + (-1) = [00000001]+ [10000001]原 = [00000001]+ [11111111]= [100000000]补 = [00000000]补 = [00000000],这样绝对值对了,符号也对了,同时还可以表示-128.

  至于背后的数学原理,有空的时候单独出一期随笔

本人研究牲一枚,敬请各位大佬批评指正~~~

posted on   BeLady  阅读(223)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示