补码运算的结果是正数时得到的就是真值,补码运算的结果是正数时得到的结果是什么?
补码运算的结果是正数时得到的就是真值,补码运算的结果是正数时得到的结果是什么?详细介绍
本文目录一览: 补码运算结果是正数时得到的结果为什么是真值啊?
当初,求补码时,一个正数,其补码就和真值,是相同的。
现在,补码运算的结果,正数和补码,当然也是相同的。
补码运算的结果是正数时得到的结果是什么?
补码 + 补码,算出来的,还是补码。
补码运算的结果是正数时得到的结果是:反码。
相关介绍:
计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
在介绍补码概念之前,先介绍一下“模”的概念:“模”是指一个计量系统的计数范围,如过去计量粮食用的斗、时钟等。
计算机也可以看成一个计量机器,因为计算机的字长是定长的,即存储和处理的位数是有限的,因此它也有一个计量范围,即都存在一个“模”。
如:时钟的计量范围是0~11,模=12。表示n位的计算机计量范围是,模=.“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可化减法为加法运算。
假设当前时针指向8点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨2小时,即8-2=6;另一种是顺拨10小时,8+10=12+6=6,即8-2=8+10=8+(12-2)(mod 12).在12为模的系统里,加10和减2效果是一样的,因此凡是减2运算,都可以用加10来代替。
若用一般公式可表示为:a-b=a-b+mod=a+(mod-b)。对“模”而言,2和10互为补数。实际上,以12为模的系统中,11和1,8和4,9和3,7和5,6和6都有这个特性,共同的特点是两者相加等于模。对于计算机,其概念和方法完全一样。
n位计算机,设n=8,所能表示的最大数是11111111,若再加1成100000000(9位),但因只有8位,最高位1自然丢失。
又回到了 00000000,所以8位二进制系统的模为。在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以了。把补数用到计算机对数的处理上,就是补码。
补码求真值怎么算?
你就直接进行【数 制 转 换】即可。
要注意:首位是负数。
--------------
已知补码是:1101 0101。
首位 1,既代表负号,也代表-128。
数值位之和:64 + 16 + 4 + 1 = +85。
加在一起,就是真值:-43。
--------------
另一个补码是:0101 0101。
首位 0,就是代表 0。
数值位之和:64 + 16 + 4 + 1 = +85。
加在一起,就是真值:0 + 85 = +85。
--------------
由补码求真值,十分简便。
并不用琢磨“原码反码取反加一符号位不变”。
老外算术不灵,才需要弄哪些骚操作。
补码是这样计算的:\r\n首位为符号位。\r\n符号位为0表示正数,正数的补码=原码=反码。\r\n符号位为1表示负数,负数的补码等于将符号位后面的位全部取反再加1。另外,一个数的补码的补码等于这个数的原码,所以如果已知一个数的补码,那么对这个补码求一次补码即可得到这个数的原码。\r\n\r\n前面已经说了,负数的补码等于符号位后面的位全部取反再加1,所以11010101取反(符号位不变)为10101010,再加1,得到10101011,此即为原真值的原码,由此很容易得到真值为:\r\n\r\n-(32+8+2+1)= -43
补码运算的结果是正数时得到的结果是什么?
补码运算的结果是正数?
这怎么可能!
补码运算的结果,不可能是数!
补码运算的结果,必然还是补码。
有可能是正数的补码,也可能是负数的补码,还有可能是零的补码。
补码。
补码的表示方法是:
正数的补码就是其本身。
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)。
[+1] = [00000001]原 = [00000001]反 = [00000001]补。
[-1] = [10000001]原 = [11111110]反 = [11111111]补。
对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值。
已知一个数的补码,求原码的操作分两种情况:
(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。
(2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1。
例如,已知一个补码为11111001,则原码是10000111(-7):因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”;其余7位1111001取反后为0000110;再加1,所以是10000111。
原码,补码,怎样转换为真值,求详细解答。
原码即真值,其中最高位为符号位,其余均为数值位。
正数、零的原码、反码、补码均相同。所以真正的求补的运算只对负数进行,且:补码的补码即是原码。
对负数求补的过程是,保持符号位不变,对数值位取反后再加一。
在计算机中,只使用补码来表示数字。
原码反码,都是不存在的。
所以,只要掌握“补码与数值”的变换,即可了。
补码与数值,对应关系如下所示:
由补码,求其代表的数字,方法极其简单。
既不用求“原码反码”,也不用考虑“符号位不变”。
会做【数 制 转 换】,即可。
但是要记住:
首位的 1,既代表负号,也代表数值-128。
---------------------
例如,八位补码是:1001 1001。
首位的 1,既代表负号,也代表数值-128。
其余各位,都是正数,求和: 16 + 8 + 1 = 25。
总和:-128 + 25 = -103。
这就是真值。
---------------------
又如果,补码是:0001 1001。
在这里,就都是正数了。
真值就是:16 + 8 + 1 = +25。
---------------------
原码反码取反加一符号位不变。。。
老外数学不好,才会弄这些骚操作。
知道补码怎么求真值吗?
你就直接进行【数 制 转 换】即可。
但是,要注意:首位是负数。
--------------
已知补码是:1101 0101。
首位 1,既代表负号,也代表-128。
数值位之和:64 + 16 + 4 + 1 = +85。
加在一起,就是真值:-43。
--------------
另一个补码是:0101 0101。
首位 0,就是代表 0。
数值位之和:64 + 16 + 4 + 1 = +85。
加在一起,就是真值:0 + 85 = +85。
--------------
由补码求真值,十分简便。
并不用琢磨“原码反码取反加一符号位不变”。
老外算术不灵,才需要弄哪些骚操作。
补码求真值的步骤如下:
如果补码的最高位是0, 那么原码就是补码, 那么真值就是对应的十进制的值。
如果补码的最高位是1, 那么原码就是补码的反码+1, 真值就是对应的十进制的值的相反数。如补码是 0101, 那么真值就是 4 + 1 = 5。
如补码是1010, 那么反码就是0101, +1以后是0110, 所以对应的十进制是4+2=6, 所以真值就是-6。
补码(two's complement) 的介绍如下:
1、在计算机系统中,数值一律用补码来表示(存储)。
主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
2、补码与原码的转换过程几乎是相同的。
一个数补码怎么求真值
最高位为0时,真值就是它;最高位为1时,可用符号位不变,数据位取反+1来求得。
知道补码,求真值,是非常简单的。
你不用求“反码原码”。你也不用想着“符号位不变”。
“取反加一”或“减一取反”,都是不需要的。
你就直接进行【数 制 转 换】即可。
比如:
有一个八位的补码,是 1000 1110。
首位 1,既代表负号,也代表数值-128。
其余数值位,都是正数:8 + 4 + 2 = +14。
求总和,就是真值:-128 + 14 =-114。
----------
另一个八位的补码,是 0000 1110。
真值,就是数值位的和:8 + 4 + 2 = +14。
----------
简不简单? 意不意外?
由补码,求真值,并不用绕来绕去的。
补码、真值,都和原码反码,毫无关系。
那么,原码反码,都是干嘛用啊?
它们,只不过是计算机专家的讨饭碗。
补码的计算问题
在计算机中,补码,只做加法运算。
就是按照二进制的算法,逢二进一。
你确实错了:
-60=11000100
53=00110101
11000100+00110101=11111001
正数的补码与原码相同。
负数的补码符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
所以:-60的最高位为1,其余七位为60的源码0111100取反后1000011加1为1000100总起来就是11000100
其结果11111001,其中最高位为1,说明为负数,
其余七位1111001减1为1111000,然后取反为0000111,转换为十进制为7
总起来就是-7
最高位只是一个符号位,1就是负数,0就是正数,参与计算,但是不参与取值
关于补码问题还有考虑宽度,例如是按照字节来计算就是8个位,c语言中的char类型就是这种,最大取值为127到-128,
如果是无符号类型,unsignedchar,那么最高位不在代表符号,而参与取值即0到255,没有负数。
当然c语言中的int是32位的,原理同上。
你只所以错了,是因为混淆了反码
例如
原码:
7的原码是00000111
-7的原码是10000111
可见原码无法进行加法计算
反码:
正数:正数的反码与原码相同。
负数:负数的反码,符号位为“1”,数值部分按位取反。
+7=00000111
-7=11111000
补码:
正数:正数的补码和原码相同。
负数:负数的补码则是符号位为“1”,数值部分按位取反后再在末位(最低位)加1。也就是“反码+1”。
+7=00000111
-7=11111001
a.采用补码后,可以方便地将减法运算转化成加法运算,运算过程得到简化。正数的补码即是它所表示的数的真值,而负数的补码的数值部份却不是它所表示的数的真值。采用补码进行运算,所得结果仍为补码。
补码和真值两者怎么换算?
补码求真值,可以参考下表:
如八位补码是 1110 0011,求真值。
其首位 1,既代表负号,也代表数值-128。
数值位之和是:64 + 32 + 2 + 1 = +99。
加在一起,就是真值:-128 + 99 = -29。
1.原码转换为真值
根据原码的定义,将原码的各数值位按权展开、求和,由符号位决定数的正负,即可由原码求出数的真值。
例:已知\[x\]原=00011111B,\[y\]原=10011101B,求x和y。
解:
x=+(0×26+0×25+1×24+1×23+1×22+1×21+1×20)=31
y=-(0×26+0×25+1×24+1×23+1×22+0×21+1×20)=-29
2.反码转换为真值
若要求反码的真值,则只要先求出反码对应的原码,再按上述原码转换为真值的方法即可求出数的真值。
正数的原码是反码本身。负数的原码可在反码基础上,保持符号位为1不变,数值位按位取反。
例:已知\[x\]反=00001111B,\[y\]反=11100101B,求x和y。
解:\[x\]原=\[x\]反=00001111B, 则
x=+(0×26+0×25+0×24+1×23+1×22+1×21+1×20)=15
\[y\]原=10011010B, 则
y=+(0×26+0×25+1×24+1×23+0×22+1×21+0×20)=-26
3.补码转换为真值
若要求出补码的真值,也要先求出补码对应的原码。正数的原码与补码相同。负数的原码可在补码的基础上再次求补,即\[x\]原=\[\[x\]补\]补。
例:已知\[x\]补=00001111B,\[y\]补=11100101B,求x和y。
解:\[x\]原=\[x\]补=00001111B, 则
x=+(0×26+0×25+0×24+1×23+1×22+1×21+1×20)=15
\[y\]原=\[\[y\]补\]补=10011011B, 则
y=-(0×26+0×25+1×24+1×23+0×22+1×21+1×20)=-27
1.原码:
(1).简介:
原码(true form)是一种计算机中对数字的二进制定点的表示方法。原码是指一个二进制数左边加上符号位后所得到的码,且当二进制数大于0时,符号位为0;二进制数小于0时,符号位为1;二进制数等于0时,符号位可以为0或1。
(2).编码方式:
原码是有符号数的最简单的编码方式,便于输入输出,但作为代码加减运算时较为复杂。一个字长为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.没有符号位的数,称为无符号数。
2.真值:
简介:
真值即真实值,在一定 条件下,被测量客观存在的实际值。真值通常是一个未知量,一般说的真值是指理论真值、 规定真值、相对真值。
理论真值也称绝对真值,如 三角形内角和180度。
约定真值也称 规定真值,是一个接近真值的值,它与真值之差可忽略不计。实际 测量中以在没有 系统误差的情况下,足够多次的测量值之 平均值作为 约定真值。
相对真值是指当高一级标准器的指示值即为下一等级的真值,此真值被称为相对真值。
在计算机数值表示中,用 正负号加 绝对值表示 数据的形式被称为“真值”。
一个量或确定的 目标在被观测的瞬时条件下所具有的确切数[量]值的 理想值。注:这种值仅在所有误差原因均已消除或 对象 总体是无限多时才能达到。在 对象 总体有限的场合,必须考虑完整的 总体。