首页 > 其他分享 >二进制中1的个数--C语言

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

时间:2022-12-16 11:40:49浏览次数:45  
标签:运算 9998 -- C语言 二进制 循环 9984 方法

分析:方法一以循环的方式进行以下操作,直到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



标签:运算,9998,--,C语言,二进制,循环,9984,方法
From: https://blog.51cto.com/u_15830263/5946992

相关文章