| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2462 人关注过本帖
标题:数一个数用二进制表示有几个1,为什么要定义成 unsigned char x ?? 试了一 ...
只看楼主 加入收藏
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
结帖率:98.63%
收藏
已结贴  问题点数:10 回复次数:25 
数一个数用二进制表示有几个1,为什么要定义成 unsigned char x ?? 试了一下int x 还真不行
把下面代码的x 宣言成 int x 还真得不出結果, 为什么,有哪位可以解释一下么
程序代码:
  int main(void){
        unsigned char x = (unsigned char)-1;
        printf("%d\n",bitcount(x));
        return 0;
    }

    int bitcount(unsigned char x) {  
        int count;
        for (count = 0; x!=0; x>>=1)           /* 比较最低位,用 & 来比较,每结束一个向右移一位 */
             if ( x & 01 )     
                  ++count;
        return count;
    }
搜索更多相关主题的帖子: color 二进制 
2012-01-10 23:56
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 

授人以渔,不授人以鱼。
2012-01-11 00:09
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
我C ,谢了~~ 
最好仅对无符号数进行移位运算
因为-1 是负数,所以結果由实现定义, 
看君一张图,省我一本书

The quieter you become, the more you can hear
2012-01-11 00:16
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我貼這個圖,還在於告誡一下那些喜歡用低級功能的朋友,有很多誤區未必是我等可以想像得到的。如無充分論證確實需要,不必賣弄低級運算。

授人以渔,不授人以鱼。
2012-01-11 00:19
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
回复 4楼 TonyDeng
好吧,我同意,不过在我这种练手阶段还是可以通过这些奇怪的程序学到很多东西的

The quieter you become, the more you can hear
2012-01-11 00:29
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:5 
以下是引用TonyDeng在2012-1-11 00:19:36的发言:

我貼這個圖,還在於告誡一下那些喜歡用低級功能的朋友,有很多誤區未必是我等可以想像得到的。如無充分論證確實需要,不必賣弄低級運算。
你倒举2个误区看看

技术问题,请不要以短消息方式提问
2012-01-11 00:31
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
回复 楼主 madfrogme
求1的个数,用循环是最差的办法,比较简单的用法是海明码

技术问题,请不要以短消息方式提问
2012-01-11 00:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 5楼 madfrogme
瞭解一下是有必要的,我是說沒必要刻意使用,好像不用這些獨特功能就顯不出水平似的。比如樓下以挑釁口吻說話的那位,必然是此道中人。

授人以渔,不授人以鱼。
2012-01-11 00:33
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
不要说我挑衅,你都说卖弄了,那你举例么,你这么有自信,想必阅代码不少了,倒是说说呢?

技术问题,请不要以短消息方式提问
2012-01-11 00:38
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
回复 7楼 zaixuexi
嗯,学过海明码,看看维基明天在复习一遍,试试明天晚上能不能把海明码 的代码贴上来哈~~

The quieter you become, the more you can hear
2012-01-11 00:42
快速回复:数一个数用二进制表示有几个1,为什么要定义成 unsigned char x ?? ...
数据加载中...
 
   



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

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