| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 402 人关注过本帖
标题:我想我卡在位操作那儿了……
只看楼主 加入收藏
heimodao
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:172
注 册:2011-4-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
我想我卡在位操作那儿了……
是这样的,书中在介绍位操作出的例子中:
输入一个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
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:10 
你需要做一些简单的位运算练习来巩固一下。练习的时候,用笔和纸反复验证你的想法。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-28 22:32
bccn_1234
Rank: 2
等 级:论坛游民
帖 子:22
专家分:13
注 册:2011-6-11
收藏
得分:0 
谁告诉你1 & 6 = 0的,谁告诉你用位运算是用10进制来计算的?你懂不懂什么叫位运算?
电脑里有个东西叫计算器calculator,你有空用用看?
2011-06-28 23:03
h_mastuade
Rank: 2
等 级:论坛游民
帖 子:21
专家分:86
注 册:2011-6-28
收藏
得分:10 
位操作的实质是数在计算机内存中的二进制表示形式的每一位进行相应的运算   unsigned int  在内存中是32位  也就是说高位如果没有是按0填充的  然后在每一位进行运算
2011-06-28 23:28
快速回复:我想我卡在位操作那儿了……
数据加载中...
 
   



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

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