当前位置:首页 » 存储配置 » 数据存储补码

数据存储补码

发布时间: 2022-08-14 19:36:48

㈠ 计算机内部如何存储数据,关于源码、补码的问题!

源码,反码,补码是计算机原理的术语。说白了就是为了理解计算机2进制用的。对于C/C++来说,是和数据类型有关的。整型(包括
char
,short,
int,
long)都是用补码方式表示有符号数的。
无符号数是使用源码方式表示的。float和double类型是使用阶码移码方式存储数据的。
计算机内部是2进制存储的,吧一个存储看作一定类型的数据,就对应着这种类型的计算。
如果没有类型作为依托,你的假设就不成立了,所以不能说它到底表示是几。
如果是整型类型,因为第一个位是0,所以不论有符合还是无符号,它都是一个正数;那么可以认为它表示十进制数字18

㈡ 正数的补码是什么

正数的补码就是原码本身,负数的补码是其反码加1。

计算机中的有符号数有即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。

补码:在反码的基础上加1,这样可以方便计算机进行计算,可以让“最高位符号位都能参与计算”。原码:字节的最高位为符号位,其余表示数值大小,最简单;反码:正数的反码和原码一样,负数的反码除最高位符号位外,其他位都取反。

补码

补码“模”概念的引入、负数补码的实质、以及补码和真值之间的关系所揭示的补码符号位所具有的数学特征,无不体现了补码在计算机中表示数值型数据的优势,解决了符号的表示的问题,克服了原码加减法运算繁杂的弊端,可有效简化运算器的设计。

补码表示统一了符号位和数值位,使得符号位可以和数值位一起直接参与运算,这也为后面设计乘法器除法器等运算器件提供了极大的方便。补码概念的引入和当时运算器设计的背景不无关系,考虑到了数据存储和处理所需要的硬件代价。

以上内容参考网络——补码

㈢ 在C语言中,整数的数值是以补码形式存放的,补码是什么意思啊

使用补码代表负数,就可以把减法,转化为加法运算。

那么,在计算机中只要有一个加法器,就可以做加、减法了。

使用补码的意义,就是简化了计算机的硬件。

常识:时钟倒拨 3 小时,可以用正拨 9 小时代替。

怎么计算,自己推导吧。

--------

两位十进制数,共有 100 个数字:00~99。

那么,减一,就可以用 +99 代替:

25-1 = 24

25 + 99 = (1) 24

取后两位,忽略进位 100,结果,不就是相同的吗?

只要利用一个“较大的正数”代替负数,就能把减法变加法了。

这个较大的正数,就是负数的补数

计算公式:-1 的补数=100-1 = 99。

-2 的补数=100-2 = 98。

。。。

--------

计算机中,使用的是二进制。

二进制的补数,就改称为补码

八位二进制数,共有 256 个数字:0000 0000~1111 1111。

那么,-1 的补码就是 1111 1111 = 255(十进制)。

同理,-2 的补码就是 1111 1110 = 254(十进制)。

。。。

最后,-128的补码就是 1000 0000 = 128(十进制)。

计算公式:负数的补码=【256+这个负数】

零和正数,不需要求补数(补码),直接计算即可。

㈣ 计算机为什么使用补码来存储数据

补码的功能,类似于:

时针倒拨 3 小时,与正拨 9 小时,效果相同。


利用这种思路,计算机中的负数,也可以改为正数(即补码)。

那么,减法运算,也就可以用加法运算代替了。

因此,利用补码,就能统一加减法,够简化计算机的硬件。


十进制比较容易理解:

25 - 1 = 24

25 + 99 = (一百) 24。

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


+99 就称为-1 的补数。

在这里用了 2 位 10 进制。

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

通用的公式是:补数 = 负数 + 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

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


借助于补码,负数就没有了,从而就把“减法转换为加法运算”。

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

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

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

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

补码能正确运算,并不是什么“符号位也参加运算”。

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

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

㈤ 关于数据存储原码,补码,反码

mov
只是简单的储存,单看数据本身,无法判断一个二进制数有没有符号,是用补码、反码、还是原码,甚至是否代表一个数字。那些都是编程的人为数据赋予的意义。如果有大段程序,可以看出逻辑、算法,也许可以辨别。

一般来说,表达负整数,目前只有用“补码”一个方法。“反码”和“原码”纯属历史,微处理器年代已经不用了。至于改二进制数有没有符号,就要从程序的上下文找线索了。有些指令是分有符号和无符号的,如果出现了,就比较好判断。以
8086
指令集为例:



右移
无符号
mul
div
shr
有符号
imul
idiv
sar

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

补码的功能类似于:时针倒拨 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

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

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

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

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

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

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

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

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

㈦ 计算机中数据存储!原码,反码。补码。如何转换

在计算机系统中,数值,一律用补码表示和存储。

计算机中,并没有原码和反码。

那么,什么是补码?补码和数值,是怎么换算的?

这应该从“补数”说起。

如果限定了参加计算的“位数”,就会发生不同寻常的事。

一般的计算,是用十进制来进行的。

如果,限定,只使用两位数:00~99。

那么,-1 和 +99,功能就是相同的:

25 - 1 = 24

25 + 99 = (一百) 24


在这里,99,就是-1 的“补数”。

一百,就是 10^2,则称为:计数周期。

补数的计算公式: 99 + |-1 | = 周期。

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


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


八位机,就是用 8 位二进制,来参加计算。


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


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


那么:


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


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


。。。


求补码的通用公式,就是:周期 + 负数。

补码,就是补码。

补码和原码反码,并没有任何关系。

求补码,并不需要借助于原码和反码。

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

在计算机中,利用补码,就能:用加法代替减法运算。

因此,就可以简化计算机的硬件。


例如,用补码计算: 3 + (-1) = 2。


0000 0011(= 3)


+1111 1111(用 255 当做-1)


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


(1) 0000 0010(= 2)


舍弃进位,只取八位的结果,这算法,就完全正确。

㈧ 计算机中的数据存储是不是以补码的形式啊

是的
计算机是二进制的。补码嘛,将负数用正数表示。
计算机就是用补码进行运算的,所以以补码形式存储。。

㈨ 为什么数据在内存里是以补码的形式存储

数据在内存里是以补码的形式存储的原因有三点:

1、保证了0的唯一性,保证了数的表示的准确性。

2、让加减可以统一处理,优化了数的运算过程。

3、解决了自身逻辑意义的完整性。

数据在内存里以补码的形式存储是为了简化计算机的结构设计,同时也提高了运算速度。在计算机系统中,数值一律用补码来表示和存储。

(9)数据存储补码扩展阅读:

补码的主要特性:

补码为一个负整数(或原码)与其补数(或补码)相加,和为模。在补码的运算中,对一个整数的补码再求补码,等于该整数自身。补码的正零与负零表示方法相同。计算机底层不区分无符号数和补码数,可认为其运算全部当作无符号数处理。

补码使得符号位能与有效值部分一起参加运算,从而简化运算规则。使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。所有这些转换都是在计算机的最底层进行的,而在我们使用的汇编、C等其他高级语言中使用的都是原码。

参考资料来源:网络-补码

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

计算机中的负数是为了方便运算,所以计算机才会采用补码存储数据。补码是计算机方便加法运算的编码。例如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的补码。如果换成其他编码运算就不会这么简单了。
例如原码相加的话存在符号位进位的问题等等。对于计算机而言。数值的计算补码是最方便的。

热点内容
王者荣耀如何查看对方服务器 发布:2025-01-05 08:17:50 浏览:747
油猴加密 发布:2025-01-05 08:08:52 浏览:698
c盘无法创建文件夹 发布:2025-01-05 08:07:57 浏览:92
学编程容易忘 发布:2025-01-05 08:07:45 浏览:332
为什么要用缓存 发布:2025-01-05 08:07:07 浏览:857
源程序编译 发布:2025-01-05 08:06:10 浏览:509
木头压缩机 发布:2025-01-05 07:49:22 浏览:53
cv2python安装 发布:2025-01-05 07:43:28 浏览:844
aspnet与数据库 发布:2025-01-05 07:27:29 浏览:237
三尺六算法 发布:2025-01-05 07:10:14 浏览:724