当前位置:首页 » 操作系统 » 补码的算法

补码的算法

发布时间: 2022-11-13 10:58:07

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。

热点内容
电信光纤上传限制 发布:2024-05-18 16:08:05 浏览:910
sql中的limit 发布:2024-05-18 16:05:57 浏览:895
启动ug时服务器无响应是怎么回事 发布:2024-05-18 15:48:24 浏览:372
小数除法的计算法则 发布:2024-05-18 15:36:52 浏览:530
安卓网卡免驱动如何实现 发布:2024-05-18 15:25:15 浏览:860
8加6算法 发布:2024-05-18 15:04:25 浏览:738
名图16款尊享什么配置 发布:2024-05-18 14:55:37 浏览:585
我的世界怎样刷出32k服务器 发布:2024-05-18 14:32:32 浏览:565
c语言程序设计江宝钏 发布:2024-05-18 14:32:22 浏览:780
右击文件夹总是转圈圈 发布:2024-05-18 14:31:10 浏览:697