社区
C语言
帖子详情
变量在计算机中以补码形式储存,那如果两个负数想加的时候符号位动吗?
never_give_up
2012-08-09 05:43:09
char a[1000];
int i;
for(i = 0; i<1000; i++)
{
a[i] = -1-i;
}
printf("%d\n", strlen(a));//这个打印出来是255
两个补码形式存储的数相加时,如果最高位(符号位)有进位时则进位被省略,那如果两个负数相加得到的是正数吗?计算机的运算规则是什么?求大侠指点
...全文
646
7
打赏
收藏
变量在计算机中以补码形式储存,那如果两个负数想加的时候符号位动吗?
char a[1000]; int i; for(i = 0; i<1000; i++) { a[i] = -1-i; } printf("%d\n", strlen(a));//这个打印出来是255 两个补码形式存储的数相加时,如果最高位(符号位)有进位时则进位被省略,那如果两个负数相加得到的是正数吗?计算机的运算规则是什么?求大侠指点
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fzamygsd
2012-08-10
打赏
举报
回复
《深入理解计算机系统》第42页
C语言标准并没有要求用补码形式来表示有符号整数,但是几乎所有机器都是这么做的
计算这样正数负数相加相减溢出等的时候,
把数在内存中的存放二进制形式写出来,负数还是以补码的形式写出来
32位如果是int型相加的话,只截取后32位,高位扔掉,
运算结果就看你是以有符号还是无符号去解释了
AnYidan
2012-08-10
打赏
举报
回复
打印出来是255的主要原因是 数据溢出,你的 i 是 int, 运算是发生了 整型提升
Gonefar
2012-08-10
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
那就是负数相计算的时候不会算符号位,而负数与负数相间的时候如果符号位有进位的时候符号位为0,还是舍弃了那个进位,要不怎么会出现正数呢
[/Quote]
负数与负数相减,计算机计算时会转成负数与正数相加。计算机计算时都是已加法和移位进行的。
titer1
2012-08-09
打赏
举报
回复
当然不动。
[Quote=引用 2 楼 的回复:]
计算机运算是以补码的形式进行,两个负数相加时,符号位不变,如果溢出的话,有些会报错,有些自动取余下的数。
[/Quote]
never_give_up
2012-08-09
打赏
举报
回复
那就是负数相计算的时候不会算符号位,而负数与负数相间的时候如果符号位有进位的时候符号位为0,还是舍弃了那个进位,要不怎么会出现正数呢
Gonefar
2012-08-09
打赏
举报
回复
计算机运算是以补码的形式进行,两个负数相加时,符号位不变,如果溢出的话,有些会报错,有些自动取余下的数。
图灵狗
2012-08-09
打赏
举报
回复
实际上是因为你的i为255时a[i]=0,而strlen实际上是统计到字符0结束,所以长度为255。
计算机
进制转换
当前的
计算机
系统使用的基本上是二进制系统,数据在
计算机
中主要是以
补码
的
形式
存储的。
计算机
中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。 20世纪被称作第三次科技...
负数
在
计算机
中的
储存
方式
负数
在
计算机
中是以
补码
的
形式
储存
的注意: 本文为了简化运算,二进制数都是用一个字节——8个二进制位说明 1 一些概念 在进行问题探究之前,先了解一些概念 1.1 原码 原码就是
符号
位加上真值的绝对值,即8位二...
计算机
中整数为什么以「
补码
」的
形式
存储?
如果后
两个
问题你都回答是,那就意味着当用3位二进制进行存储、且
符号
位0表示正1表示负时,1会存储成001,-1会存储成101。可惜事实不是这样,
计算机
中是用
补码
的
形式
而不是刚刚那种看上去很自然的
形式
存储整数,
补码
...
负数
在
计算机
中的存储——
补码
首先,
负数
要在
计算机
中正确存储,其对应
变量
必须声明为有
符号
数。有
符号
数的最高位为
符号
位:0代表正数,1代表
负数
;后面的位则为数值位。 现在来研究一个简单的
负数
-1在一个字节(8位)中的存储。 按照一般理解...
计算机
存储数据为什么以
补码
形式
以及原码,反码,
补码
的关系详解
整型在
计算机
中无论正数还是
负数
都以
补码
的
形式
存储,只不过正数的原码,反码,
补码
都一样,首先,
计算机
cpu只有加法器,只能进行加法,如果是
负数
,也要转换成加法进行计算,还可以再进行一次取反加一,得来的也是...
C语言
69,391
社区成员
243,079
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章