社区
C语言
帖子详情
补码疑问
wit2188
2007-10-07 02:05:36
-32768在内存中的二进制数表示为1000 0000 0000 0000,这实际上为补码,根据补码求不出十进制数,只有把它变成原码才行。求补码的原码只有对其本身求补,符号位不动后面取反加1后得到:0000 0000 0000 0000,这就怪了,这个数按权展开后并没有得到-32768,怎么回事?
...全文
163
10
打赏
收藏
补码疑问
-32768在内存中的二进制数表示为1000 0000 0000 0000,这实际上为补码,根据补码求不出十进制数,只有把它变成原码才行。求补码的原码只有对其本身求补,符号位不动后面取反加1后得到:0000 0000 0000 0000,这就怪了,这个数按权展开后并没有得到-32768,怎么回事?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wit2188
2007-10-08
打赏
举报
回复
那就是说-32768的表示1000 0000 0000 0000就是这么规定的,1000 0000 0000 0000无法通过某种转化计算得出-32768,是不是?
genieyyt
2007-10-08
打赏
举报
回复
一般的编译器,数出界就模除
比如 unsigned char a=265;
a是多少
a-256(char)=9
IlikeEnglish
2007-10-07
打赏
举报
回复
这是人为规定的。 -128 的补码为 1000 0000 同理可得-32768
wit2188
2007-10-07
打赏
举报
回复
为什么有溢出就回到最小数-32768?0000 0000 0000 0000怎么能转化成-32768?
hjzwl1018
2007-10-07
打赏
举报
回复
楼主的意思是什么?你要用short int(16位)的话,范围是:-32768~32767,如你所说,后16位全零,有溢出,由于是恰好(+1)溢出,所以回到最小数-32768
wit2188
2007-10-07
打赏
举报
回复
这个数按权展开后并没有得到-32768,怎么回事?-32768在内存中的二进制数是1000 0000 0000 0000吗?就算是,就算它是原码,你把它按权展开后能得到-32768吗?
genieyyt
2007-10-07
打赏
举报
回复
1000 0000 0000 0000
取反
0111 1111 1111 1111
+1 后
1000 0000 0000 0000
是这个结果么?
-32768在内存中的二进制数表示为1000 0000 0000 0000(这是原码)
1000 0000 0000 0000(这是补码=原码,但)
有符号数,1是最高位->符号位,即为-0,
有符号数的最小数-32768
wit2188
2007-10-07
打赏
举报
回复
你没看清我在问什么。
mochen5460
2007-10-07
打赏
举报
回复
因为32768表示成二进制数时,2个字节是不够的,而是1 0000 0000 0000 0000,所以自然就变马了全0.
wit2188
2007-10-07
打赏
举报
回复
没知道的?
补码
移位的
疑问
?
同时为什么1000左移后变成0000,它叫做数值超出了范围呢?这又是如何超出了范围呢?
补码
的1110也不等于-6啊 这里我们不考虑它的这个错误,我们考虑的是为什么从+7变为负数就是叫做溢出了呢?如果移位后的数没有超出当前位数所能够表示的数的范围,只是改变了大小,或者正负号。溢出:超出了当前位数所能够表示的数的范围;(课本上大致的定义就是这样,也就是我和我后面疑惑之一);如果按照上面溢出的定义:这个图片里面给的最后一条完全不构成溢出的条件;我似乎在哪里看见过这么一句话:只有
补码
的算术左移才可能产生溢出。
负数
补码
和负数本身进行转换的一个好方法---解答一网友的
疑问
我们先来看这位网友的问题: ~123的返回值就为-124? 先将123转成二进制数01111011,然后各位取反得10000100,最后得-124。为什么答案是-124? 我确实有点实证主义了, 还是用代码来验证一下(为了简便起见, 我们仅仅考虑8位): #include int main() { char a = 123; char b =
关于
补码
--看锆石fpga计算峰峰值时的
疑问
&启示
一、
疑问
看锆石fpga计算峰峰值时的
疑问
:为什么判断data_max_sub[8]就知道AD_DATA、data_max哪个大? 二、猜测 当data_max_sub[8]==0时,就把ad_data_reg赋给data_max_n,也就是:当AD_DATA大于data_max时(data_max_sub[8]==0),data_max_sub是正数时,把减数赋给data_...
补码
计算的原理
首先,我个人认为,,与进制无关,进制只是数的表现形式而已x补x256))mod256所以−3十进制10000011二进制原码11111101二进制
补码
253十进制
补码
256−3−3mod256253mod256所以下面我以十进制为例,演示
补码
可以进行加法和乘法,其中-5,-30的
补码
是251与226之所以非要用十进制而不是二进制演示,我觉得十进制方便看,好理解而已显然
补码
进行四则运算是没有问题的。
2014-03-12关于
补码
的问题
《深入理解计算机系统》中看到的,说
补码
最高位的权为-2^(n-1),n为位数。非常简洁。 但是也留了一个问题就是,整数下限的表示法为什么要借助上限,不是直接表示。
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章