| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 402 人关注过本帖
标题:我想我卡在位操作那儿了……
取消只看楼主 加入收藏
heimodao
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:172
注 册:2011-4-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:0 
我想我卡在位操作那儿了……
是这样的,书中在介绍位操作出的例子中:
输入一个unsigned 的整数a,
然后定义一个unsigned的b=1,为当成掩码,所以:unsigned b=1<<31,

接下来,用一个for循环来打印某个目的:
********
for(i=1;i<=32;i++)  {
    putchar(a & b ? '1':'0');
    a<<=1;
    if(i%8==0){putchar(' ');}
    }
*************
输入65000,输出:00000000 00000000 11111101 11101000,
看不懂了,书中表示,a&b时,发生一些事情,除了最高位外,其余的都被屏蔽了,
掩码b的最高位是1,那么1 & 6的结果应该是1才对阿?
还是说,65000前面也自动对齐1了?,就是b=0000(略)0065000?这样说,输出了八个0就是说过去了,当1&6 ,输出1,当1&5,输出1,当1&0,输出0,接着,完了,对不上了,请问有人能帮我卡过这个坎吗?菜鸟求点睛
2011-06-28 22:24
快速回复:我想我卡在位操作那儿了……
数据加载中...
 
   



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

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