标题:救救!关于有符号数与无符号数超过范围后应该如何存取
只看楼主
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: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-315036-1-1.html




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

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