当前位置:首页 » 服务存储 » 负数是按补码存储吗
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

负数是按补码存储吗

发布时间: 2023-05-21 21:02:53

1. 什么叫"负数用补码表示"

补码,来自于:补数。

一般的常识:

钟表时针,倒拨 3 小时,可以用“正拨 9 小时”来代替。

分针,倒拨 X 分,可以用 正拨 60-X 代替。

搜哗孙60 是分针的周期。

十进制数,两位:0~99,周期就是一百。

-1 可以用 +99 代替。

如:25 - 1 = 24

25 + 99 = (1) 24

忽略进位 1 百,结果就是相同的。

那么,-1 的补数,就是 99 。

-2 的补数,就是 98 。

-X 的补数,就是【 周期 + 该负数 】。

--------世链

借助于补数,就可芦手以用加法,代替减法运算。

所以,计算机就可以节省硬件了。

--------

八位二进制:0000 0000~1111 1111(0~255)。

周期是 256。

那么,-1 可以用 1111 1111 (+255) 代替。

即:

-1 的补码,就是 1111 1111 (= 256-1=+255) 。

-2 的补码,就是 1111 1110 (= 256-2=+254) 。

。。。

-X 的补数,就是【 周期 + 该负数 】。

-128,就可以用 1000 0000(= 128)代替 。

正数,不需要变换,直接运算即可。

--------

在计算机中,负数,就是用补码存储、计算的。

原码和反码,毫无用处,它们在计算机中都不存在。

2. 为什么c语言负数是以补码形式存放的

为什么 C 语言负数是以补码形式存放的?

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

这个事,和 C 语言没有任何关系拿塌。

因为,计算机本身,它就是“用补码存储正负数字”。

C 语言的程序,在计算机中运行,也就必须“用补码存储正负数”。

而且,无论你用任消贺圆何编程语言编拍肢写程序,负数,都是用补码存放的。



3. 为什么负数要以补码形式存储

补码的功能类似于:时针倒拨 3 小时,与正拨 9 小时,效果相同。

那么,计算机中的负数,也可以改为正数(即补码)。

同时,减法运算,也就可以用加法运算代替了。

于是,借助于补码,就统一了加减法,就能够简化计算机的硬件。

十进制比较容易理解:

25 - 1 = 24

25 + 99 = (一百) 24。

只要忽略进位,+99 就能代替-1。

+99 就称为-1 的补数。

在这里用了 2 位 10 进制。

求补数的算法:补数 = 负数 + 10^n。

n 是位数。

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

计算机用二进制,补数,就改名为:补码。

一个字节,是 8 位 2 进制。

计数范围仿敬是:0000 0000 ~ 1111 1111(十进制 255)。

计数周期是:2^8 = 256。

求补码的算法:负数的补码=负数+2^n。

那么:

-1 的补码=-1 + 256 = 255 = 1111 1111。

-2 的补码=-2 + 256 = 254 = 1111 1110。

。。。

例如,7-2 = 5,用补码计算如下:

7 =0000 0111

[-2] 补 =1111 1110

---相加------------

得:(1)0000 0101 = 5

舍弃进位,结果笑宽就完全正确。

借助于补码,计算机中,就不存在负数了,从而就把减法转换为加法运算。

-------碰大亮----------------

补码的来源,与原码反码毫无关系。

“取反加一、符号位也能参加运算”,这些,都没有什么理论依据。

通过原码反码,已经证明“符号位能参加运算”是错误的。

补码,它就是一个正数,什么符号位也没有。

补码的全部位,都是代表数据的,当然就都可以参加运算。

4. 计算机中的负数为什么用补码存储

计算机中的负数是为了方便运算,所以计算机才会采用补码存储数据。补码是计算机方便加法睁档运算的编码。例如100(10进制)100/16=6余46/16=0余6。所以100的16进制数是64H以8位二进制来说64H=01100100B正数的补码和原码相同。
所以100的补码还是01100100。
另假设还有个数是-109109的16进制,是01101101-109的原码,就是11101101(首位是符号位)-109的反码,就是10010010(除了符号位其悉尘乱他各位分别取反)。109的补码就是10010011(反码加1)。现在运算100-109=100+(-109)。01100100+10010011=11110111这个结果就是-9的补码。如果换成其他编码运算就不会这么简单了。
例如原码相加的话存兄仿在符号位进位的问题等等。对于计算机而言。数值的计算补码是最方便的。

5. 二进制中的负数在计算机的储存方式

二进制的储存中都是用的补码,正数的原码、反码和补码相同,负数的原码是最高位为1,反码最高位不变,其余各位取反,补码为其反码+1。比如说:-1的原码是10000001(省略几个零),反码是11111110,补码就是11111111。~_~我现在C语言学得很好的哦,问我就不会错了。

6. 二进制的负数都是补码

1、在计算机薯磨孝系统中,数值一律用补码来表示(存储).
主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理.另外,两个用补
码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃.
2、补码与原码的转换过程几乎是相同的.
数值的补码表示也分两种情况:
(1)正数的补码:与原码相同.
例如,+9的补码游颤是00001001.
(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1.
例如,-7的补码:因为是负数,则符号位为“1”,整个为10000111;其余数稿7位为-7的绝对值+7的原码
0000111按位取反为1111000;再加1,所以-7的补码是11111001.