网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月10日
漏签
0
天
c语言吧
关注:
798,972
贴子:
4,358,470
看贴
图片
吧主推荐
视频
游戏
22
回复贴,共
1
页
<<返回c语言吧
>0< 加载中...
求助
关于数字的存储
只看楼主
收藏
回复
十里坡的剑神
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这里以一个字节为范围。目前知道有原码,补码一说。
比如一个字节8个比特位,可表示的数字范围是-128~+127
那么-128在计算机中是以原码还是补码的形式储存的呢(我知道是以补码也算的)
-128原码:1000 0000 反码:1111 1111 补码:1 000 0000
假设是补码储存,因为一个字节只能存储8个比特位,那么1 0000 0000的存储结果只能是0000 0000,这样识别出来就是0了
所有计算机里是原码存储?
十里坡的剑神
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
上面有个地方少些个0,补码1 0000 0000
2025-08-10 18:23:09
广告
不感兴趣
开通SVIP免广告
十里坡的剑神
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
但是我查了,好像都是用补码来存储的,那么-128和0的补码不重复了吗?
0的原码补码都是0000 0000
-128原码1000 0000,补码0000 0000(前面有个1溢出了)
这样计算机怎么识别呢
GTA小鸡
吧主
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
目前所有的计算机都使用补码表示整数,使用原码的计算机已经在上个世纪灭绝了。
香菜味包子
超能力者
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我是傻逼
GTA小鸡
吧主
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
从原理来解释:
补码的英文是two's complement,它的字面意思是“2的补集”,这个翻译才最贴合补码的含义:补码是原数关于2^n的补数,也就是补码 = 2^n + 原数
因此对于原数-128来说,补码=256-128=128=10000000。
所以补码运算实际上是原数mod 2^n的同余运算,正数和负数的补码刚好构成一个环,加法和减法可以使用同样的逻辑。
所谓“补码是原码符号位以外取反+1”,这实际上是补码原理总结的运算规则,并不是补码的原理。
~ZXP4~
强能力者
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
推荐你看一看《深入理解计算机系统(CSAPP)》的第二章。
草酱
彩虹面包
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
看到补码那串晦涩的公式,不是去死记,要思考为什么是这样的。
补码存在的意义就是消除减法,这样CPU里面就不需要减法电路了,大大降低了成本。
对于CPU来说所有的数都是正数,只能进行加法运算,负数和减法只是我们主观认为是。
人的视角:-1 + 1 = 0
CPU视角:255 + 1 = 256 = 0 (超出8位丢弃进位)
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示