8位机器码10110100'它是补码时'表示十进制的真值是?可不可以把算得过程告诉我
发布网友
发布时间:2022-05-02 01:14
我来回答
共3个回答
热心网友
时间:2023-10-08 23:30
-76
一个有符号定点数的最高位为符号位,0是正数,1是负数。正数的补码和其原码相同. 补码 = 原码。所以,该数显然是负数。所以,该数表示十进制的真值是:256D-10110100B,10110100B转化为10进制数是128+32+16+4=180.
所以256D-10110100B = 76 D. 加个符号即可。 即位机器码10110100'它是补码时'表示十进制的真值是 -76.
详细理论:
C语言、补码.
1.任何数值是以补码存放在内存中的.
2.正数的补码和其原码相同. 补码 = 原码。
3.负数的补码的两种求法:(假设8bit,即8位)
(1).是将该数的绝对值的二进制形式,按位取反,再加1.
例. 求-10的补码.
第一步是取-10的绝对值10;
第二步取10的二进制形式为00001010;
第三步对00001010取反得11110101;
第四步再加1得11110110.
所以-10在内存中就以11110110形式存放。
(2).256-欲求的负数的绝对值 = 此负数的补码。注意:256 - 的是这个负数的绝对值,而不是这个数
。也就是说 256 -|负数|=补码. 求其原码,则 256 - 补码 = |负数| ,则原码需要把首位变为1即可.
例. 求-10的补码.
第一步是 256 - |-10|=246.
第二步把246变为二进制,11110110.
所以-10在内存中就以11110110形式存放。
两种方法比较下来,显然,第二种更为简便!
4.反码:把每位取反,即0变1,1变0即可。
5.一个有符号定点数的最高位为符号位,0是正数,1是负数。
笔者认为,对于原码、补码、反码的追究无需深入,只需要知道数据在计算机中以补码形式存储即可,
至于怎么存储是计算机的事情。当然,大学里面的结业考试或计算机等级考试可能会有个别计算这个的
题目。
热心网友
时间:2023-10-08 23:30
因为数据在计算机中都是以二进制表示的,编译系统对于不同类型的变量分配不同大小的存贮空间,制定不同的取值范围。比如整型在计算机中的存储用2个字节16位的存储空间,其中的最高位代表符号位的,符号位为0表示的是正数,符号位为1表示为负数,整型数据在内存中以二进制的补码存放。
以10和-10说明正数在内存中的存放形式:
十进制 10 -10
二进制原码 0000000000001010 1000000000001010
二进制反码 0000000000001010 1111111111110101
二进制补码 0000000000001010 1111111111110110
由上面可以知道,二进制的补码10110100对应的反码为10110011对应的原码为11001100.
对于这个8位的机器码,由于其首位为1,表示为负数的,化为十进制就变为
11001100=-(1×2^6+1×2^5+1×2^3+1×2^2)=-76
如果你想认为首位不代表负数表示,其补码与原码一样,这在计算机中不知是使用8为表示的时候,首位的1就不能认为是负数的标识,则化为十进制为
10110100=1×2^7+1×2^5+1×2^4+1×2^2=180
热心网友
时间:2023-10-08 23:30
知道补码,求真值,是非常简单的。
既不用你求“反码原码”,也不要你想着“符号位不变”。
“取反加一”或“减一取反”,都是不需要的。
你只要会做【数 制 转 换】就行了。
比如:八位的补码:1011 0100。
首位 1,既代表负数,也代表-128。
其余都是数值位:32 + 16 + 4 = +52。
求和,立即就得出真值:-128 + 52 =-76。
----------
倘若补码是:0011 0100。
其真值就是:32 + 16 + 4 = +52。
简单不简单?意外不意外?
有人说:原码是最简单的编码方式。显然是错的!