补码的算法
A. 怎么算,补码运算规则的进位舍弃
首先要掌握“补码运算”的意义。
就是:用加法器代替减法器,简化硬件。
因为:作加法,加多了,就可以呈现出减法的作用。
比如两位十进制,-1 可以用 +99 代替。
24 - 1 = 23
24 + 99 = (1) 23
舍弃进位,只取两位的结果,那么,减法就可用加法代替了。
你要注意了,进位,必须舍弃。
谁要讨论补码运算的进位,就是自寻烦恼!
--------------
八位二进制:0000 0000~1111 1111。
相当于十进制:0~255。
此时,-1 就可以用 1111 1111(255) 代替了。
1111 1111(255),就是-1 的补码。
1111 1110(254),就是-2 的补码。
。。。。。。
1000 0000(128),就是-128 的补码。
0~127,还是原来的正数。
--------------
那么,问题就来了:
正数+正数,如果超出了 127,结果,就是负数。
结果的符号不合理。这就是溢出。
--------------
同理:负数+负数,超出了 255,进位再舍弃,就是正数了。
这也是溢出。
还有:正数-负数、负数-正数,也可能溢出。
能够产生溢出,只有这四种算法。
--------------
溢出,就是符号异常。
用二进制数的运算,来判断进位、溢出,书上都有例题。
B. 计算机的,反码,原码,补码!求它们的计算方法
在计算机系统中,数值,一律用补码来表示和存放。
原码和反码,在计算机中,都是不存在的。
使用补码代表正负数值,可将负数,转换成正数来计算。
这就可以节省硬件,只用加法器,便可实现加减法运算。
补码,是是什么意思?这得从【补数】谈起。
计算机所计算的位数,是固定的,如八位机。。。
位数限定之后,其计数范围,就有了周期性。
如两位十进制 0~99,周期就是 100(一百)。
那么,减一,就可以用 +99 代替:
25 - 1 = 24
25 + 99 = (一百) 24
舍弃进位,只取两位,这两种算法,功能就是相同的。
这就用正数,代替了负数!用加法,就实现了减法运算!
99,就是-1 的补数。计算公式:补数 = 周期 + 负数。
学过三角函数的同学,都知道,函数周期是:2π(360°)。
那么-90°,也可以+270° 来计算。这也是同样的道理。
一个负角度,怎么计算出“等效的正角度”,大家都会。
-------------------------
计算机用二进制,补数,就改称为:补码。
八位二进制:0000 0000 ~ 1111 1111。
对应十进制:0 ~ 255。
计数周期是:2^8 = 256。
那么,
-1 的补码是 256 + (-1) = 255 = 1111 1111(二进制)。
-2 的补码是:254 = 1111 1110。
。。。
-128 的补码是:128 = 1000 0000。
用不存在的“原码反码取反加一”来求,也是这个结果。
求负数补码的计算公式,也是: 周期 + 该负数。
正数,也可以使用这个公式。但是,计算后,这个周期的数值,
超出了计数范围,就略去了。最后,还是这个正数。
-------------------------
例如: 7-3 = 4。
用补码的计算过程如下:
7 的补码=0000 0111
-3的补码=1111 1101
--相加-------------
得(1)0000 0100= 4 的补码
舍弃进位,只保留八位作为结果,就求出了 7-3。
-------------------------
原码和反码,在计算机中,都是不存在的,无用的。
它们不过是,计算机老师捧在手中的饭碗而已。
C. 补码.原码.反码怎么运算的啊.详细一点
计算机中,并没有原码反码,只有补码。
补码,是在计算机中,自然形成的,跟原码反码毫无关系。
对于补码,应该直接用二进制来讨论,不要绕道并不存在的原码反码上去。
以八位机来说明如下。
数字 0,就是用八个位:0000 0000 来存放的。
数字-1,就是用零的二进制,减去一,即:
0000 0000-1 = (1) 1111 1111,
仍存放八个位,就是 1111 1111 (十进制255)。
数字-2,你就再减去一,就是 1111 1110 (=254)。
数字-3,你就再减去一,就是 1111 1101 (=253)。
。。。
-128,就是减 128 次一,最后得 1000 0000 (=128)。
这些就是负数的补码。
计算公式:256+该负数
=256-对应的正数
-18 的补码就是:256-18 = 238 = 1110 1110(二进制)。
你用“原码反码符号位取反加一”来计算,也一样是这个结果。
无聊的时候,再探讨原码反码吧,反正也没有任何用处。
D. 计算机原码反码补码怎么算
计算机中,并没有原码和反码,只是使用补码,代表正负数。
使用补码的意义:可以把减法或负数,转换为加法运算。从而简化计算机的硬件。
------------
比如钟表,时针转一圈,周期是 12 小时。
倒拨 3 小时,可以用正拨 9 小时代替。
9,就称为-3 的补数。
计算方法:12-3 = 9。
对于分针,倒拨 X 分,就可以用正拨 60-X 代替。
------------
如果,限定了两位十进制数 (0~99),周期就是 100。
那么,减一,就可以用 +99 代替。
24-1 = 23
24 + 99 = (1) 23
忽略进位,只取两位数,这两种算法,结果就是相同的。
于是,99 就是 -1 的补数。
其它负数的补数,大家可以自己求!
求出了负数的补数,就可用加法,代替减法了。
------------
计算机中使用二进制,补数,就改称为【补码】。
常用的八位二进制是:0000 0000~1111 1111。
它们代表了十进制:0~255,周期就是 256。
那么,-1,就可以用255=1111 1111代替。
所以:-1 的补码,就是 1111 1111 = 255。
同理:-2 的补码,就是 1111 1110 = 254。
继续:-3的补码,就是 1111 1101 = 253。
。。。
最后:-128,补码是 1000 0000 = 128。
计算公式:负数的补码=256+这个负数。
正数,直接运算即可,不需要求补码。
也可以说,正数本身就是补码。
------------
补码的应用如: 7-3 = 4。
用补码的计算过程如下:
7 的补码=0000 0111
-3的补码=1111 1101
--相加-------------
得:(1)0000 0100= 4 的补码
舍弃进位,只保留八位,作为结果即可。
这就是:使用补码,加法就代替了减法。
所以,在计算机中,有一个加法器,就够用了。
原码和反码,都没有这种功能。
------------
原码和反码,毫无用处。计算机中,根本就没有它们。
E. 计算机导论 补码是怎么算的啊 看不懂
在计算机系统中,数值,一律采用补码表示和存放。
在计算机中,并没有原码和反码。
采用补码的原因是:
借助于补码,负数和减法,都可以转化成加法来进行运算。
那么,计算机的硬件,就可以简化了。
因此,在计算机中,只有加法器,并没有减法器。
------------------------
所谓【补码】,就是一个【代替负数进行运算的正数】。
补码是怎么回事?这得从“补数”谈起。
-----------------------
先用十进制来解释,比较容易理解。
25-1=24
25+99=(一百) 24
如果舍弃进位,那么,-1,就可以用正数 99 代替、减法也就可以用加法实现了。
这个正数(99),就是负数(-1)的补数。
在这里,用的是 2 位 10 进制,计数周期就是 10^2 = 100。
-1 的补数 +99 是怎么算出来的?
显然就是:【-1+周期】。
-----------------------
8 位 2 进制,计数周期是 2^8 = 256。
那么,-1 的补码就是:
-1+256 = 255 = 1111 1111(二进制)。
同理:
-2 的补码,就是:-2 + 256 = 1111 1110;
-3 的补码,就是:-3 + 256 = 1111 1101;
。。。
-128 的补码,就是:-128 + 256 = 1000 0000。
以上,就是八位字长,所能代表的 128 个负数。
求负数补码的通用公式: [X]补 = X + 计数周期。
正数,不用做任何变换。所以,正数,并不存在补码。
-----------------------
补码,就是补码,和原码反码,都没有任何关系。
利用补码,可以节省一个减法器,而原码反码都不具备这种功能。
所以,在计算机中,只是使用补码,并不用原码和反码。
那么,原码和反码有什么用呢?
那就是计算机老师,捧在手里的一个碗。。。
-----------------------
举例说明,如: 5 - 7 = -2。
用补码计算的过程如下:
5=0000 0101
-7 的补码=1111 1001
--相加-------------
得(1) 1111 1110= -2 的补码
舍弃进位,只保留八位,这就实现了 5-7。
F. 二进制补码怎么算
1、在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 2、补码与原码的转换过程几乎是相同的。 数值的补码表示也分两种情况: (1)正数的补码:与原码相同。 例如,+9的补码是00001001。 (2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。 例如,-7的补码:因为是负数,则符号位为“1”,整个为10000111;其余7位为-7的绝对值+7的原码 0000111按位取反为1111000;再加1,所以-7的补码是11111001。 已知一个数的补码,求原码的操作分两种情况: (1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。 (2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取 反,然后再整个数加1。 例如,已知一个补码为11111001,则原码是10000111(-7):因为符号位为“1”,表示是一个负 数,所以该位不变,仍为“1”;其余7位1111001取反后为0000110;再加1,所以是10000111。 在“闲扯原码、反码、补码”文件中,没有提到一个很重要的概念“模”。我在这里稍微介绍一下“模” 的概念: “模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有一个计量范 围,即都存在一个“模”。例如: 时钟的计量范围是0~11,模=12。 表示n位的计算机计量范围是0~2(n)-1,模=2(n)。【注:n表示指数】 “模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的 余数。任何有模的计量器,均可化减法为加法运算。 例如: 假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法: 一种是倒拨4小时,即:10-4=6 另一种是顺拨8小时:10+8=12+6=6 在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。 对“模”而言,8和4互为补数。实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特 性。共同的特点是两者相加等于模。 对于计算机,其概念和方法完全一样。n位计算机,设n=8, 所能表示的最大数是11111111,若再 加1称为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的 模为2(8)。 在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以 了。把补数用到计算机对数的处理上,就是补码。 另外两个概念 一的补码(one's complement) 指的是正数=原码,负数=反码 而二的补码(two's complement) 指的就是通常所指的补码
G. 计算机中什么叫补码啊``` 怎么算的
补码,在计算机中,有所应用。
但是,补码的来源,是由算法导出的,和计算机无关。
比如,一个小孩,很小的。
他只认识 100 个数,也不会做减法。
那么,减一,就可以告诉他,用加99 代替:
36 - 1 = 35
36 + 99 = (1) 35
忽略进位,结果不是一样的吗?
99,就是-1 的补数。
算法:补数=模+负数。
其中的“模”,是计数系统中,数字个数的总数。
补码,也就是二进制的补数。
八位二进制,共有 256 个数字,模,就是 256。
255(1111 1111),就是-1 的补码;
254(1111 1110),就是-2 的补码;
... ...
128(1000 0000),就是-128 的补码。
算法:
补码=256 +负数。
正数,直接参加运算即可,用不着转换。
H. 补码、原码、反码怎么运算
原码, 反码和补码的概念.对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式。原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。反码就是正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。补码就是正数的补码就是其本身,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反。
1. 原码
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:
[+1]原= 0000 0001
[-1]原= 1000 0001
第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:
[1111 1111 , 0111 1111]
即
[-127 , 127]
原码是人脑最容易理解和计算的表示方式。
2. 反码
反码的表示方法是:
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
[+1] = [00000001]原= [00000001]反
[-1] = [10000001]原= [11111110]反
可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算。
3. 补码
补码的表示方法是:
正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
[+1] = [00000001]原= [00000001]反= [00000001]补
[-1] = [10000001]原= [11111110]反= [11111111]补
对于负数,补码表示方式也是人脑无法直观看出其数值的。通常也需要转换成原码在计算其数值。
I. 知道 补码,如何 计算 原码
两种计算方法:
算法1: 补码=原码取反再加1的逆运算
10010110是补码,应先减去1变为反码,得10010101;
由反码取得源码即除符号位外其他为按位取反,得11101010,即十进制数的-106
算法2:负数补码速算法,由最低位(右)向高位(左)查找到第一个1与符号位之间的所有数字按位取反的逆运算
10010110是补码,符号位与最后一个1之间的所有数字按位取反,得11101010
两种算法得出同样结果
J. 负数的补码怎么求 负数的补码计算方法
在计算机系统中,数值,一律采用补码表示和存储。
在计算机中,原码和反码,都是不存在的。
求补码,也用不着它们。
所以,原码和反码,根本就没有用!
------------------------
补码,其实,就是一个“代替负数做运算”的正数。
且看 2 位 10 进制数的运算:
25 - 1 = 24
25 + 99 = (一百) 24
你舍弃进位,只取两位,这两种算法,功能就完全相同。
那么,+99,就代替了-1。加法,也就代替了减法。
这不就是用正数(补数)代替了负数吗?
由负数求对应的补数,计算公式是: 补数 = 负数 + 10^n。
式中: n 是补数的位数。
10^n 是 n 位 10 进制数的计数周期。
-------------------------
计算机用二进制,补数,就改称为:补码。
计算机所能计算的位数,是固定的,如八位机、16 位。。。
八位二进制是:0000 0000~1111 1111 (十进制 255)。
八位二进制的计数周期,是:2^8 = 256。
求负数补码的计算公式,也是: 负数 + 周期。
-1 补码就是:-1 + 256 = 255 = 1111 1111(二进制)。
-2 补码就是:-2 + 256 = 254 = 1111 1110(二进制)。
。。。
-128 补码就是:128 = 1000 0000(二进制)。
正数,必须直接参加运算,不许转换。
所以,正数不存在补码。
求补码,根本就不用“原码反码符号位取反加一”。
-------------------------
举例说明,用八位补码计算: 5 - 7 = -2。
5 = 0000 0101
-7 的补码= 1111 1001
--相加-------------
得 (1) 1111 1110 = -2 的补码
舍弃进位,只保留八位,这就用加法,实现了 5-7。