标题:移位
只看楼主
xuexuexue
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2004-7-19
 问题点数:0 回复次数:17 
移位

main()

{char x=040;

printf ("%d\n",x=x<<1);

}

请问这个程序计算结果为何为64?

我的算法如下,不知错在哪里?

八进制数040=100000然后左移一位不是变成000000了吗?

搜索更多相关主题的帖子: 移位 
2004-07-19 14:16
雨夜探月
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2004-7-15
得分:0 
你错在认为040左移会是000000,它左移后真正的2进制是1000000,也就是2^6=64

http://www./jgjs/picture/photos/html/10061.htm
2004-07-19 15:35
xuexuexue
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2004-7-19
得分:0 
左移不是把1给移掉了吗?怎么会是1000000?

C语言让我感爱到了计算机的乐趣 目前目标:程序员
2004-07-19 15:53
雨夜探月
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2004-7-15
得分:0 

难道040=100000左移会溢出?


http://www./jgjs/picture/photos/html/10061.htm
2004-07-19 15:59
xuexuexue
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2004-7-19
得分:0 
我还是不明白能不能解释一下谢谢了

C语言让我感爱到了计算机的乐趣 目前目标:程序员
2004-07-19 16:26
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
得分:0 
以下是引用xuexuexue在2004-07-19 16:26:18的发言: 我还是不明白能不能解释一下谢谢了

个人意见:

你定义的是char,用整数打出的是他的ASCII码,ASCII码没有负数,所以应该没有符号位,所以应该没有溢出吧


我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2004-07-19 18:29
遥望
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2004-7-1
得分:0 

不是吧,你再好好看看。


★★★★★★★★★★ 纵里寻她千百度 蓦然回首 那人却在,灯火阑珊处!
2004-07-19 18:41
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
得分:0 
以下是引用遥望在2004-07-19 18:41:33的发言:

不是吧,你再好好看看。

粗心了,不好意思


我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2004-07-19 21:45
xuexuexue
Rank: 1
等 级:新手上路
帖 子:118
专家分:0
注 册:2004-7-19
得分:0 
粗心什么了?????

C语言让我感爱到了计算机的乐趣 目前目标:程序员
2004-07-20 12:57
雨夜探月
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2004-7-15
得分:0 
移位
还是让高手来解释吧,他们解释的更清楚些.

http://www./jgjs/picture/photos/html/10061.htm
2004-07-20 14:14



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




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

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