当前位置:首页 » 存储配置 » 存储器里存的都是补码

存储器里存的都是补码

发布时间: 2022-05-20 05:08:30

1. 什么是一个数的原码,反码,补码

原码,反码,补码针对的是定长二进制存储器表示的有符号整数。
正数的原码,反码,补码都相同。
负数的原码最高位为1,其他位为整数的绝对值(零有+0、-0之分)。
负数的反码最高位为1,其他位为整数的绝对值按位取反(零有+0、-0之分)。
负数的补码最高位为1,其他位为整数的绝对值按位取反再加一(零没有+0、-0之分,最常用)。
比如-1的原码为0x80000001,反码为0xFFFFFFFE,补码为0xFFFFFFFF。
//---------
在计算绝对值、取反、加一的过程中,无论提升成多少位去计算,最后装填时,都保留后几位(符号位以外相应位数)。

2. 存储器中用来表示存储位元的形式有哪些

c的char数据属于基本类型,基本类型其中还包括-整型,实型,枚举类型! 数据在内存中是以二进制形式存放的。数值是以补码表示的。 整型: 一个正数的补码和其原码的形式相同。而负数的补码方式是将其绝对值的二进制形式“按位求反再加1” 实型: 在内存中占4个字节,是按照指数形式存储的,实型数据分为小数部分和指数部分,分别存放!计算机用二进制表示小数部分,用2的幂次来表示指数部分! 字符型: 在内存中字符的存储实际上是把字符相对应的ASCII代码放到存储单元中的。而这些ASCII代码值在计算机中也是以二进制形式存放的。这个与整型的存储很相似。因此这两类之间的转换也比较方便!c的char数据属于基本类型,基本类型其中还包括-整型,实型,枚举类型! 数据在内存中是以二进制形式存放的。数值是以补码表示的。 整型: 一个正数的补码和其原码的形式相同。而负数的补码方式是将其绝对值的二进制形式“按位求反再加1” 实型: 在内存中占4个字节,是按照指数形式存储的,实型数据分为小数部分和指数部分,分别存放!计算机用二进制表示小数部分,用2的幂次来表示指数部分! 字符型: 在内存中字符的存储实际上是把字符相对应的ASCII代码放到存储单元中的。而这些ASCII代码值在计算机中也是以二进制形式存放的。这个与整型的存储很相似。因此这两类之间的转换也比较方便!

3. 计算机中的数字是不是都是用补码存放的

数字都是用补码存放,原因很简单,只要补码与数字是一一对应的,
比如用原码时,正0、0、负0都表示0 所以原码不是一一对应

4. 关于计算机存储的是补码的问题

计算机存储的都是补码, 但是正数的补码跟源码是一样的
129的补码是0000 0000 1000 0001
赋值给s以后会被阶段, 变成 1000 0001
这个时候最高位变成了1(最左边的), 计算机就认为是个负数了, 所以按照负数的补码看待, 就变成-127了
这个实际上属于溢出

5. 既然计算机对数值的运算和存储都是补码形式,那无符号型数据没有补码,怎么存储的有点晕。

计算机对数值的运算和存储都是以补码形式(这句话没毛病吧?)
--八位补码,只有七位表示数值。
那无符号型数据是没有补码之说的,怎么存储?
--八位,都是数值,没有正负号。

6. 电脑里的二进制数是以补码的形式表示的。这怎样理解呢能举个例子吗

在计算机中,对带符号数可用真值和机器数两个概念表示。所谓真值,就是带有“+”、“-”号的实际数值;所谓机器数,则是把“+”、“-”符号数值化后所得到的计算机实际能表示的数。对于带符号数,在计算机中表示正负号的最简单方法是约定用
0 表示“+”,用 1 表示“-”。并规定二进制数的最高位作为符号位。机器数有三种码表示,分别是原码、反码和补码。汇编语言中,数都是以补码的形式表示的。
正数的补码与正数的原码、反码都一样,最高位为符号位0,其余位是数值位。求负数的补码时,符号位为1,数值位在原码的基础上求反加1。
例如:十进制数+5和-5分别表示成二进制数原码、反码和补码。
[+5]原=[+5]反=[+5]补=00000101B=05H
[-5]原=10000101B=85H
[-5]反=11111010B=FAH
[-5]补=11111011B=FBH

7. 既然计算机内部数据是以补码存储的,为什么还要有原码呢原码和反码存在的意义是什么 初学者请教大家

正负数据,只是使用补码来存放。
计算机中,并没有原码和反码。

正负数,和补码之间,有个关系式,可以直接互相转换,并不需要绕道原码反码。
原码和反码,可以说,一无是处。

8. 为什么数据在内存里是以补码的形式存储正数好理解,就是其本身。负数为何不能直接第一位1表示负,其后

补吗是为了加减运算才出现的。。。我们都知道如果加一个负数,只要减去他对应的正数即可,
如 3+(-1)=3-1=2
计算机很笨,没这种思维,他加法就是加法
3+(-3) 如果按你的方法表示负数 结果时 0x03+0x83=0x86 显然不是0,因为计算机不会把加法变成减法。。。
那另一种就是取补吗,0x03+0xfd=0x00 这样就符合运算规则,这就是为什么要有补吗,-1 必须要比-2 在代码上大1,
如果只是把首位变成1 ,那仍然不符合这个规则,0x01 0x02如果只是首位变符号,结论是 0x81 小于 0x82 这就是一个错误 -1<-2 不符合逻辑。。。CPU只是个机器,没有智商可言。。。。
计算机对数字的处理 抛开符号位 00000000必须是最小的数,显然拿单字节来说 -128应该全0, 带上符号那么就是1000000是自小的数就是-128。。。。 -1+1应该为0 那么 ff+1=0 所以ff就是-1。。。。

9. 补码二进制计算机为什么要用补码存储整型,关于

补码的功能,类似于:

时针倒拨 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

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

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

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

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

“原码反码取反加一、符号位也能参加运算”...

这些,都没有什么理论依据。

从“原码取反加一”开始学习补码,就弄不清楚“为什么用补码”。

10. 正数和负数在内存中是以什么形式存储的,都是补码 为什么呢

是以二进制方式储存的,既补码形式,正数前是0,负数前加1

热点内容
linux文件最后一行 发布:2024-11-15 10:44:11 浏览:612
怎么根据序列号查配置 发布:2024-11-15 10:31:52 浏览:348
mysql查看数据库位置 发布:2024-11-15 10:25:16 浏览:439
需要学Python 发布:2024-11-15 10:23:41 浏览:836
如何制作安卓平板软件 发布:2024-11-15 10:23:39 浏览:215
手机忘记密码被锁预示着什么 发布:2024-11-15 10:22:15 浏览:193
android图片管理 发布:2024-11-15 10:13:02 浏览:9
算法微调 发布:2024-11-15 10:07:44 浏览:542
python列表查询 发布:2024-11-15 10:06:08 浏览:133
保存在服务器的图片如何删除 发布:2024-11-15 09:55:09 浏览:801