补码11011010的真值为多少()D?

补码11011010的真值为多少()D?,第1张

由补码求真值,是非常简单的事。

你既不用求“反码原码”,也不用想着“符号位不变”。

“取反加一”或“减一取反”,都是不需要的。

你只需要做数 制 转 换就行了。

已知八位补码1101 1010。

首位 1,既代表负号,也代表数值-128。

其余都是正数: 64 + 16 + 8 + 2 = 90。

求总和,立即就求出真值:-38。

-------------

如果,补码是 1101 1010

真值就是:  64 + 16 + 8 + 2 = +90。

这两个补码,分别是“定点小数的补码”和“定点整数的补码”。

按照补码的定义,可知:

它们的真值,分别是:-10 和 -16。

而这两个真值,都没有原码。

---------------------

怎么算的? 

定点小数补码(mod=2)的定义式是:

[ X ]补 = X; (  0 ≤ X < 1 )

[ X ]补 = 2 + X 。(-1 ≤ X < 0 )

因此,-10 的补码为 2 + (-10) = 10000。

----------------------

定点整数的补码(mod=2^n)的定义式是:

[ X ]补 = X; ( 0 ≤ X < 2^(n-1) )

[ X ]补 = 2^n - | X |。 (-2^(n-1) ≤ X < 0 )

当 n = 5 时,-16 的补码 = 32-16 = 1,0000。

----------------------

由补码求真值,是非常简单的事。

你既不用求“反码原码”,也不用想着“符号位不变”。

“取反加一”或“减一取反”,都是不需要的。

你就直接进行数 制 转 换即可。

---------------------

补码是 87H = 1 000 0111。

首位 1,既代表了负号,也代表数值-128。

其余都是正数:4 + 2 + 1 = 7。

求总和,立刻就求出真值:-128 + 7 = -121。

---------------------

八位补码是 3DH = 0 011 1101。

首位是 0,这没有什么可说的了。

其余各位之和:32 + 16 + 8 + 4 + 1 = 61。

真值就是:+61。

---------------------

补码是 0B62H = 0 000 1011 0110 0010。

首位是 0,这没有什么可说的了。

其余各位之和:2048 + 512 + 256 + 64 + 32 + 2 = 2914。

真值就是:+2914。

---------------------

补码是 3CF2H = 0 011 1100 1111 0010。

各位之和:15602。

真值就是:+15602。

---------------------

由补码求真值,你只需要做“各 位 求 和”。

简不简单?

意不意外!

X 的补码是 10001,求 X 的真值。

码长,就是这 5 位?

那么,首位的 1,既代表负号,也代表数值:-16。

各位之和,就是真值:-16 + 1 =-15。

由补码求真值,不需要“求原码”,也不用“取反加一”,更不用“谈及绝对值”。

“伊彩缘17”所说的,都是用不着的,网友们不要被它误导。

看到10011100最高位为1 说明这是一个负数
接着将1提取出来 剩下 0011100
根据负数的补码是除符号位外其余位依次取反再+1,那么先将0011100减1得到0011011
再将0011011依次取反得到1100100 将这个二进制数化为十进制得到100 那么最后的真值就是-100

回答问题之前先让我们来了解一下:
一个数在计算机中的二进制表示形式,
叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号,
正数为0,
负数为1。
原码就是符号位加上真值的绝对值,
即用第一位表示符号,
其余位表示值。
反码的表示方法是:正数的反码是其本身;负数的反码是在其原码的基础上,
符号位不变,其余各个位取反。
补码的表示方法是:正数的补码就是其本身;负数的补码是在其原码的基础上,
符号位不变,
其余各位取反,
最后+1
(即在反码的基础上+1)。
因此我们在求一个数的补码之前,应当先求出这个数的原码。
1
将一个数转化为二进制数,既是它的源码。可通过除二求余法算得(既对一个数除二求余,这会得出一个数和一个余数,再对得出来的数进行求余,得出余数,以此类推,最后将余数倒写即可)。
2
如是一个正数,它的补码与它的原码相同;如果是一个负数,它的补码是在它的原码的基础上,开头符号位不变,其余各位取反,最后再在其上面+1(既在反码的基础上+1)。

1正数,原码= 补码。
2[X]补 = 10001110,最高位为1,为负数!
负数补码求原码步骤:
假设无符 10001110B=128+8+4+2=142
256D - 10001110B = 256 - 142 = 114
所以,X]补 = 10001110,求X的真值 -114
详细理论:
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是负数。
笔者认为,对于原码、补码、反码的追究无需深入,只需要知道数据在计算机中以补码形式存储即可,
至于怎么存储是计算机的事情。当然,大学里面的结业考试或计算机等级考试可能会有个别计算这个的

1、87H,为10000111,为负数,根据原码求补码的方法:符号位不变,将数值位按位求反末位加1,得-01111001,其真值就是-79H
2、3DH,为00111101,为正数,其真值就是3DH
另外两个同理


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13194896.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-18
下一篇 2023-06-18

发表评论

登录后才能评论

评论列表(0条)

保存