问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在一段程序中输出二进制数字的个数?比如-1?

发布网友 发布时间:2023-10-03 06:19

我来回答

1个回答

热心网友 时间:2024-12-03 23:05

下面是三种方式:

①通过模2除2(%2、/2)的方法

num%2——取出二进制的最后一位

num/2——右移去掉二进制的最后一位

通过while循环,依次取出二进制的最后一位数字判断是否为1,若为1则count++,while(num)只有当num变为0时循环结束。

问题:在测试-1出现bug,-1的二进制中应该有32个1,输出却为0。我们将-1带入代码中发现-1%2=0,count不增,然后-1/2=0,循环结束,故输出count的值为0。

解决方案:将变量num的数据类型改为unsigned int (无符号整型),此时表示的是正的整型的最大值,所以当num=-1时,表示二进制为32个1的正数,通过循环可以输出正确的个数。

②通过右移操作符(>>)、按位与操作符(&)实现

Example:当num=10(1010),通过右移操作num>>i,二进制向右移动i位。

//i=0,num>>0,右移0位,此时(1010)&(0001)=0

//i=1,num>>1,右移1位,此时(0101)&(0001)=1,count++

//i=2,num>>2,右移2位,此时(0010)&(0001)=0

//i=3,num>>3,右移3位,此时(0001)&(0001)=1,count++

……

因为二进制共32位,所以循环要执行32次后结束,得到count为2。

缺点:不够高效,必须循环32次。

③通过按位与操作符(&)巧妙运算实现

Example:  当num=15时,

1//num&(num-1)=(1111)&(1110)=(1110)    

2//num&(num-1)=(1110)&(1101)=(1100)   

3//num&(num-1)=(1100)&(1011)=(1000)   

4//num&(num-1)=(1000)&(0111)=0  ,循环停止。共执行4次while循环。

扩展资料

一、指定的某一位数置1

宏 #define setbit(x,y)  x|=(1<<y)

二、指定的某一位数置0

宏  #define clrbit(x,y)  x&=~(1<<y)

三、指定的某一位数取反

宏  #define reversebit(x,y)  x^=(1<<y)

四、获取的某一位的值

宏 #define getbit(x,y)   ((x) >> (y)&1)



声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
瑞安市塘下航达汽车电器配件厂怎么样? 意尔康公司总部地址在哪里 I only wish to face the sea, with spring blossoms是什么意思 征信五级分类是什么?被纳入黑名单有什么影响? 你好,如果诈骗分子利用你隐私视频和盗取你的通讯录好友威胁你要钱的话... ...对方有我的私密照片还有通讯录,要求我给他五千,要不然就发我家人,我... ...现在已经一个月没有性生活了。但是她平时对我很好 是怎么了?_百度... 女人半年没有性生活正常吗 谁能用英语给我写一段游戏里面的征婚启事? 征婚启事用英文怎么说? 街舞耐克怎么练?1 一个手机只能用一个嘛? 数字照度计VICTOR 1010A可以用来测红外灯的光强吗? 街舞nike教学之怎么打耐克29 为什么用手机注册微信时总提示该手机号无绑定呢? 双卡双待手机怎么切换微信和qq 2021年重庆酉阳自治县自考大专需要什么条件? 李清照《声声慢》中“梧桐更兼细雨,到黄昏.点点滴滴”是由哪句... 李清照《声声慢》中“梧桐更兼细雨,到黄昏.点点滴滴”是由哪句...10 古人衣服上没有口袋,那么他们把东西放哪了呢?12 一个手机号在注册了一个微信后又注册了新的,旧的怎么找回? 梧桐更兼细雨,到黄昏,点点滴滴。赏析50 古时候的人们在走路的时候,袖中的东西为啥掉不出来? 李清照的梧桐更兼细雨,到黄昏,点点滴滴是哪首诗66 梧桐更兼细雨出自哪首诗?73 梧桐更兼细雨116 古人衣服上没有口袋,喜欢把东西放袖子里,难道东西不会掉出来吗... 古代衣服上有口袋吗,为什么放袖子里不会掉1 怎样找回曾经被我删过的微信好友,没有,没有手机号?2 抖音内涵段子什么关系305 街舞里面的NIKE怎么做 街舞nike和肩撑哪个更难1 水泥生产煅烧时间大约多长?1 街舞耐克怎么做? 数字155 635 1010 1135 的最大公因数是多少? 自贡炒菜哪里好吃 数字问题。数学问题。8位数,前4位是1100,后面4位也是由1和0组成。请问... 文山好吃的炒菜 泸铜1001至1010后面的数字代表什么? 一个手机号注册了两个前一个怎么办 “梧桐更兼细雨”是什么意思?9 梧桐更兼细雨,到黄昏,点点滴滴后面是什么182 手机丢了,微信不记得绑定的哪个号码。又没设置。。。怎么找回来... 苏州531行动计划是指什么? 有人家电话没有微信怎么回事,人家的微信也是手机号开的 同一手机号注册两个,前一个怎么登 街舞耐克速成 关于街舞肘架和nike 街舞爆点NIKE怎么打? 怎么解除绑定手机号呢?