设置一个算子10000000(二进制),与输入的字符“按位与”,得到非0值则该位是1;将算子右移一位再与其“按位与”……直到算子为0。把所得非0值取逻辑值(非0的逻辑值是1)加起来就是这个字符的二进制编码中的1的个数。代码如下:
#include "stdio.h"运行样例如下:
通过位运算实现比较方便:
for(int i=0;i<8;i++)大致代码就是这样的。
追问老师刚开始讲,我发觉您的思路比我清晰多了!
我用的DO WHILE 的 感觉麻烦多了
那个 为什么要用16进制呢??
位运算,用十六进制表达更加清晰而已,你完全可以直接写:
if((ch>>i) & 1)这样是完全等效的,只是代码不够直观罢了。
本回答被提问者采纳