已知8位机器码 10110100,它是补码时,表示的十进制真值是( )。
-76。
最前面那位是符号位,代表符号,后七位是数字位,补码求原码,正数不变,负数除符号位其它取反再加1,所以求得原码后,在将除符号位后七位二进制转换为十进制。
首先第一步求1011 0100的十进制数为180然后256-180=76。-76的补码就属是180的原码。
扩展资料:
原码是有符号数的最简单的编码方式,便于输入输出,但作为代码加减运算时较为复杂。一个字长为n的机器数能表示不同的数字的个数是固定的2^n个,n=8时2^n=256。
用来表示有符号数,数的范围就是 -2^(n-1)-1 ~ 2^(n-1)-1,n=8时,这个范围就是 -127到+127。
但是在不需要考虑数的正负时,就不需要用一位来表示符号位,n位机器数全部用来表示是数值,这时表示数的范围就是0~2^n-1,n=8时这个范围就是0~255.没有符号位的数,称为无符号数。
原码(补码的补码)11001100
二进制真值-1001100
十进制真值-76
知道补码,求真值,是非常简单的。
你既不用求“反码原码”,也不用想着“符号位不变”。
“取反加一”或“减一取反”,都是不需要的。
你就直接进行【数 制 转 换】即可。
比如:
八位的补码:1011 0100。
首位 1,既代表负数,也代表-128。
其余都是正数:32 + 16 + 4 = 52。
求总和,立即就得出真值:-76。
----------
又如:八位的补码:0011 0100。
其真值就是:32 + 16 + 4 = +52。
简单不简单?意外不意外?
有人说:原码是最简单的编码方式。显然是错的!