拓冰建站拓冰建站
首页 / 资讯中心 / 正文

编写代码实现:求一个整数存储在内存中的二进制中1的个数(位操作符)

1、逐位检查法#includestdio.h int main() { int count 0; int num 5; while(num!0) { if(num1 1) { count; } numnum1 } printf(二进制中1的个数%d“count return 0 }按位与是两位都是1结果才是1只要任意一位是0结果都是0按位异或^:对应位相同为1不同为0按位或只要对应比特位上有1结果就是1这个算法有一个问题我们知道-1的二进制是11111111取反码再补码与1还是-12固定循环次数法#includestdio.h int main() { int num -1; int count 0; for(int i0;i32;i) { if((numi)11) { count; } } printf(二进制中1的个数%d“count return 0 }这个代码就是限制了循环次数固定31次加上符号为就可以计算出多少个1了这段代码在32位系统上统计int中1的个数对num-1这种特殊值结果正确但是存在可移植性差和依赖系统的问题3nn-1#inxludestdio.h int main() { int num-1; int count0; while(num!0) { count; numnum(num-1); } printf(“二进制中1的个数%d“count return 0 }这种方法循环次数就是1的个数
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门