-0的存储在计算机中到底代表啥?

来源:互联网 发布:小型宝塔数控机床编程 编辑:程序博客网 时间:2024/05/22 17:12

我们都知道计算机的世界里面只有0和1,所有的数字在计算机中都是按照二进制存储。那么问题来了,我们咋样区分正数和负数。伟大的科学家发明了原反补码来区分。并且把最高位置0代表正数,正数的原反补码都相同;负数我们把它的最高位置1代表它是负数,负数的反码是把原数除符号位取反,求负整数的补码,将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1 。计算机中都存的补码。

现在我们举个例子:以一个8位的char类型来说,它的范围是-128~127。一开始我很奇怪,7位最大就是127,为啥会出现-128呢。思来想去,我发现在有符号数中出现了0和-0两个矛盾体。科学解释:在数的表示上产生编码映射的不唯一性,对转换后的10000000强制认定为-128。所以-0在1个字节中认定是-128。
为啥这样规定:查过很多资料看到同余定理等内容,我觉得得出的都是同一个结论:就是为了形成一个环。
上边的char类型存储127是0111 1111当它加1之后变为1000 0000,再加1变为1000 0001这是一个负数。我们在利用开始的原反补看-127在计算机中的存储原码1111 1111,反码1000 0000.补码是1000 0001。那么刚才的1000 0000加1得到1000 0001自然1000 0000就是-128。同时解决0和-0的问题。

以上内容,是自己在上一篇博客关于一位遇到的小问题,花费小半天查阅资料得到自己的一点理解。科学家们但当初是否这样猜想就不得而知。哈哈哈。。。欢迎讨论。。。

阅读全文
0 0
原创粉丝点击