返回

二进制中1的个数--C语言

发布时间:2022-12-20 19:07:45 306
# 数据# 缺陷

分析:方法一以循环的方式进行以下操作,直到n缩减变为0。(1) 用该数据模2,检测其是否能够被2整除 。(2)若可以,则该数据对应二进制比特位的最低位一定是0,否则是1。如果是1,给计数加1 。如果n不等于0时,继续(1)

方法二一个int类型的数据,对应的二进制一共有32个比特位,可以采用位运算的方式一位一位的检测


方法三思路:采用相邻的两个数据进行按位与运算

举例: 9999:‭10 0111 0000 1111

第一次循环:n=9999   n=n&(n-1)=9999&9998= 9998

第二次循环:n=9998   n=n&(n-1)=9998&9997= 9996

第三次循环:n=9996   n=n&(n-1)=9996&9995= 9992

第四次循环:n=9992   n=n&(n-1)=9992&9991= 9984

第五次循环:n=9984   n=n&(n-1)=9984&9983= 9728

第六次循环:n=9728   n=n&(n-1)=9728&9727= 9216

第七次循环:n=9216   n=n&(n-1)=9216&9215= 8192

第八次循环:n=8192   n=n&(n-1)=8192&8191= 0

方法一缺陷:进行了大量的取模以及除法运算,取模和除法运算的效率本来就比较低;方法二缺陷:不论是什么数据,循环都要执行32次

方法二优点:用位操作代替取模和除法运算,效率稍微比较高 ;方法三优点:此种方式,数据的二进制比特位中有几个1,循环就循环几次,而且中间采用了位运算,处理起来比较高效

方法一:代码如下

二进制中1的个数--C语言_位运算


方法二:代码如下

二进制中1的个数--C语言_二进制_02

方法三:代码如下

二进制中1的个数--C语言_取模_03



特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
5:数据类型-MySQL 2022-12-20 18:41:39