如题所述
1000 0000(补码),求其十进制真值?
首位 1,既代表负号,又代表数值-128。
再加上数值位,就是真值。
所以,真值=-128 + 0 = -128。
-----------------------
码长八位时,-128 只有补码,并没有原码和反码。
那么,“取反加一”或“减一取反”,肯定都是不能用了。
求补码的正规做法,是应用“补码的定义式”:
当 X < 0,[ X ]补 = X + 2^n, n 是补码的位数。
按此公式,[-128]补 = -128 + 2^8 = 128
= 1000 0000(二进制)
反之,你也可以说:
八位补码 1000 0000,其真值是-128。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2010-10-07
00000000
负整数0的原码,符号位1,其它位0 -- 10000000 (假定共8位,最高位是符号位)
负整数0的反码,符号位不变,为1,其它位0变1,-- 11111111
负整数0的,等于它的反码加1 --
11111111 + 1 = [1]00000000
里的1因溢出,自动丢失,成为 00000000
所以0和负整数0的补码相同,00000000本回答被提问者采纳
负整数0的原码,符号位1,其它位0 -- 10000000 (假定共8位,最高位是符号位)
负整数0的反码,符号位不变,为1,其它位0变1,-- 11111111
负整数0的,等于它的反码加1 --
11111111 + 1 = [1]00000000
里的1因溢出,自动丢失,成为 00000000
所以0和负整数0的补码相同,00000000本回答被提问者采纳
第2个回答 2010-10-07
表示-128
8位二进制数的原码、反码和补码对照表见图片,点击图片放大
第3个回答 2010-10-09
-128
这个数感觉比较特殊,第一位即表示符号有表示数值,其实你如果要求一个负数的补码,只要把这个数的正数的补码包括符号位在内每位取反末尾加一就可以了,得到的就是包括符号位的这个负数的补码,但是如果最高位也就是符号位仍然有向更高位的进位,则溢出错误。
这个数感觉比较特殊,第一位即表示符号有表示数值,其实你如果要求一个负数的补码,只要把这个数的正数的补码包括符号位在内每位取反末尾加一就可以了,得到的就是包括符号位的这个负数的补码,但是如果最高位也就是符号位仍然有向更高位的进位,则溢出错误。