| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 239 人关注过本帖
标题:请哪位大侠帮忙看下下面代码的意思
只看楼主 加入收藏
小11妖
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-11-7
收藏
 问题点数:0 回复次数:3 
请哪位大侠帮忙看下下面代码的意思
int ass=5678;
int i=0,c=0;

while(ass)
    {
        c = ss&1;
        a[i++] = c;
        ass >>= 1;
    }
2012-11-08 10:53
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:0 
int ass=5678;
int i=0,c=0;

while(ass)//如果为真,即ass大于零就进行循环,否则推出循环
    {
        c =ass&1;//这里是不是写错了?得到ass的个位数字赋给c
        a[i++] = c;//将c赋给数组a的第i个元素后,i自动加1
        ass >>= 1;//ass右移一位,即相当于除以2
    }

小小战士,战士中的战斗机!
2012-11-08 11:22
某人在心灵
Rank: 1
等 级:新手上路
帖 子:8
专家分:3
注 册:2012-11-7
收藏
得分:0 
楼主 C=SS都是笔误?  是不是C=ASS啊   
你的5678太大了  化成二进制太长 我假设ass=9,  那么ass=(1001)bin  ,基本知识 你必须掌握一些 bin代表进制
我讲一下第一次循环的内容:while(ass)这种写法大概理解为 ass!=空的时候就执行循环
{
                  c=ass&1  意思是ass数值二进制形式最后一位(0)和1相与(其实就是0+1)然后得到的新数值赋值给此时C=1010
数组a[]从a0开始填入C的值1010,由于角标i++从0加了1  下一个循环就是a[0+1]=a1被写入c的值了
ASS >>=1意思是 ass数值 向右移位高位补充0,比如ass=1001 移位1后是0100,把这个值重新赋值ASS。保证ass也变化了。可以理解成先 a>>1,然后 新a=a
然后进入下一次循环  发现while(ass)依然成立  
 由于是循环 a0 a1 a2  之类的会不断被填入上一步运算出来的新的C值

我其实很不习惯while(ass)这种形式
也不好理解判断ass哪个属性 循环才进行下去。
请指正
2012-11-08 11:30
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
嗯,二进制转换


[fly]存在即是合理[/fly]
2012-11-08 13:20
快速回复:请哪位大侠帮忙看下下面代码的意思
数据加载中...
 
   



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

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