首页 > 代码库 > 关于原码、补码、反码的理解
关于原码、补码、反码的理解
补下基础 --
原码、补码、反码
-- 正数补码、反码都和原码一样, 符号位为0
-- 负数原码 符号位为1,其他位为 绝对值表示的二进制数
反码 原码符号位不变、其他位按位取反
补码 反码 + 1
反码的问题是 00000000 为0, 反码为 00000000
10000000 也为0, 反码为 11111111
这样0就有两个反码, 11111111 -127反码为 1000000
补码 反码 + 1 所以
10000000为0 反码为11111111 补码为反码+1 => 00000000
00000000为0 反码为00000000 补码为00000000
这样 0 的补码和反码是一样的,
而反码中 被0占用的 10000000
假设在补码中,10000000 被一个数占用了, 即10000000 如果是补码,则反码为01111111,
因为反码和原码的符号位相同,则该反码对应一个正数, 而正数对应的补码和原码一样,所以这里矛盾了,
10000000 这个补码被空出来的,不可能被【-127,127】之间的数占用,
故在补码中 把10000000 这个补码给了-128使用。
由此 补码的表示范围扩大了一个数 【-128, 127】
关于原码、补码、反码的理解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。