社区
C语言
帖子详情
补码疑问
wit2188
2007-10-07 02:05:36
-32768在内存中的二进制数表示为1000 0000 0000 0000,这实际上为补码,根据补码求不出十进制数,只有把它变成原码才行。求补码的原码只有对其本身求补,符号位不动后面取反加1后得到:0000 0000 0000 0000,这就怪了,这个数按权展开后并没有得到-32768,怎么回事?
...全文
116
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
打赏
举报
回复
没知道的?
有符号十进制数向任意格式定点
补码
二进制数据转化matlab源码
1、此matlab文件可以实现有符号十进制数向任意格式定点
补码
二进制数据的转化:例如 fix16_13格式的定点二进制转化 ,-1.75:'1100100000000000' 0.75:'0001100000000000' 2、如果对定点数据格式不清楚的话,此处...
2~62位任意进制转换方法(c++)
正确的做法是:考虑好按照16位(short)还是32位(int)抑或64位(long long),先求出二进制
补码
(这时候就正负数就统一了),将二进制数转换为十进制后在转换为其他进制(如果有小伙伴知道如何直接将二进制转换为任意进制...
关于
补码
的理解
之前一直对
补码
了解不多,或者说没去了解,最近看了一些博客和书,感觉有所收获,想再细致的总结一下,作个笔记 博客地址:http://www.ruanyifeng.com/blog/2009/08/twos_complement.html 这个博客是阮一峰老师在...
一篇彻底学懂
补码
补码
是计算机运算中的一种数据表示方式,它的存在意义是简化减法的运算。 许多人接触
补码
,仅是被告知是“正数不变,负数取反加一”,而对于为什么需要这么做,以及
补码
本身的存在意义并不清楚。 而网上关于
补码
的...
补码
那些事
文章目录
补码
的作用首先谈谈
补码
与原码的转化接下来便是
补码
的加减法
补码
的作用 负数转化为
补码
时除符号位外取反加一 因为+0和-0都为零,但是其反码又不同浪费了存储空间,于是
补码
解决了-0的问题从而将二进制...
C语言
69,368
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章