| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1182 人关注过本帖
标题:救救!关于有符号数与无符号数超过范围后应该如何存取
只看楼主 加入收藏
weishihuan
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-8-7
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
救救!关于有符号数与无符号数超过范围后应该如何存取
一个16位的处理器,当定义一个有符号数时,这时输入一个38000时,应该超出范围了吧。这时计算机实际是按什么来存取的。请大家给我讲一下,最好详细点,非常感谢!
搜索更多相关主题的帖子: 符号 范围 存取 
2010-08-07 11:27
mujiaha
Rank: 2
等 级:论坛游民
帖 子:37
专家分:65
注 册:2010-7-27
收藏
得分:5 
我就打个比方  如果是8位处理器;有符号应该是-128到127;-128就是 1000 0000;但是如果你输入-129;-129的补码就是129的原码按位取反再加1;129的原码:1000 0001,取反:0111 111 0;再加1;0111 1111;这样就你输入-129,其实它存的就是127;输入-130,就是126;同样你输入128,就是-128;
2010-08-07 14:48
王璐
Rank: 2
等 级:论坛游民
帖 子:126
专家分:54
注 册:2010-7-26
收藏
得分:5 
就取38000换算成二进制时的后16位,不论什么类型之间的转换,都是把输入的数的二进制形式按照你的定义去截取
2010-08-07 14:52
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1705
专家分:4345
注 册:2007-12-27
收藏
得分:5 
从根上说,就像3楼说的那样,转换成二进制,然后从前面截掉因为溢出而多余的位,把剩下的按照指定数据类型来理解。

形象一点呢,可以这样想:
(1)想象弄一张纸条,很长,在一头写上指定的整数数据类型所能表示的最大值,另一头写最小值,然后在中间均匀写好那些不大不小的。
(2)接下来把纸条围在腰上,两头接触,不要重叠。(当然,自己的腰要是不够粗,可以借用地球的腰)现在纸条变成一圈了。
(3)接下来到腰带(纸圈)上面去测量吧,从0开始,量到你输入的数值,看看腰带上的刻度是多少,这就是溢出以后的结果了。

哦,以前给小朋友讲溢出就这么讲。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2010-08-07 17:56
hy1107648
Rank: 2
等 级:论坛游民
帖 子:80
专家分:40
注 册:2010-2-8
收藏
得分:5 
顶4L 讲得很形象,也很幽默,哈哈~
2010-08-07 18:15
快速回复:救救!关于有符号数与无符号数超过范围后应该如何存取
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.086637 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved