首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
(判断题)对于整数 n,(n & (...
[单选题]
(判断题)对于整数 n,(n & (n-1) ) == 0 的含义是判断 n 是否为偶数。
正确
错误
查看正确选项
添加笔记
求解答(27)
邀请回答
收藏(607)
分享
18个回答
添加回答
51
陈效威
要判断奇偶数, 直接用二进制最后一位去比较就可以.
if
(n &
1
)
cout
<<
"奇数"
<< endl;
else
cout
<<
"偶数"
<< endl;
n & (n-1) 的作用是把n的最低位1设置为0;
XXX10000
->
XXX00000
所以这个表达式
(n & (n-1) ) == 0 可以用来判断n是否是0 或者2的整数倍.
编辑于 2019-04-10 19:51:37
回复(9)
20
影囚
n & (n-1) 是将n的二进制形式,最右端的1置0。 因此表达式 ( n & (n-1) ) == 0 的作用是判断,n 的二进制bit位中1的个数是否为1或0,也就是判断n是否为0或2的非负整数幂 。
发表于 2021-05-31 15:45:41
回复(0)
6
BABOONHu
这是判断 n 是否是
2 的整数次幂
假设 n 的二进制形式有 m
1
个 1
n - 1 的二进制形式有 m
2
个 1
容易知道 m
1
!= m
2
根据
按位与运算
的特性,如果(n & (n-1) ) == 0
则 n 的 m
1
个 1 与 (n-1)的 m
2
个 1 完全没有重叠!
这样的 n 应该满足什么性质呢?
如果 (n-1)可以写成十进制下的 2
m
- 1, 那么n就是 十进制下的2
m
这样的话,n 的二进制表示就与 n-1的二进制表示在1的位置这一方面完全没有重合!
可以想到,除了这种情况以外,其他的都不行
发表于 2022-09-15 00:38:11
回复(1)
6
Justliangzhu
这个&有0则0,-1操作正好各项转变01,为什么不能判断奇数偶数,真是奇了怪了.
发表于 2021-02-24 10:30:31
回复(5)
4
牛客751175898号
若是1&(1-1),结果是0,不能证明1是偶数
发表于 2022-04-01 14:31:20
回复(0)
4
牛客726934702号
这里的&是什么运算符啊 求指点
发表于 2020-12-24 19:59:09
回复(2)
3
牛客851945495号
按位与运算,例如:n=7,二进制为0111,(n-1)=6,二进制为0110。 则与运算为: 0111 & 0110 = 0110,可以看出是最后一位减一运算。故它的作用为一个作用是可以用来统计一个数1的个数,也可以用于判断一个数据是否为2的幂。判断1的个数while(n&(n-1))方式统计次数,判断是否为2的幂则直接判断n&(n-1)是否==0,等于0则是否则不是。因为2的幂二进制数只会包含一个1.
发表于 2020-10-27 18:10:41
回复(0)
2
MrLeiCCC
n & (n - 1) 会把 n的二进制表示里的最后一位1变成0,所以 n & (n - 1) == 0 的意思是,n 的二进制表示里是否只有1位是1
发表于 2021-08-15 13:08:43
回复(0)
1
Joker2720
2
的
非负整数
幂不一定是偶数(例如:1),偶数也不一定是2的非负整数幂(例如:-2、6)。
编辑于 2022-02-08 18:52:20
回复(0)
1
yf15273073192
这道题得仔细一点 除了特例“n=1”之外 这道题的说法就是正确的。
发表于 2020-09-02 15:51:03
回复(0)
0
分时日月周算数关罗父
6&(6-1)
发表于 2023-08-27 18:13:14
回复(0)
0
牛客615337819号
把数带进去算就行了
发表于 2022-07-28 13:09:23
回复(0)
0
理想汽车内推官
特例1
发表于 2021-10-12 08:29:17
回复(0)
0
不熟19
转载:
https://my.oschina.net/u/2822116/blog/790384
发表于 2021-03-29 22:03:26
回复(0)
0
牛客980459962号
特例0
发表于 2021-03-19 11:32:05
回复(0)
0
打死小怪兽
B
发表于 2021-03-10 09:38:28
回复(0)
0
牛客506299977号
<p>n取1就不成立,故选F</p>
发表于 2020-10-30 10:54:50
回复(0)
0
师傅呢
判断得出的是2的某次方或0
发表于 2019-04-10 21:43:10
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
C++工程师
C语言
C++
2019
华为
来自:
2019华为网络精英挑...
上传者:
小小
难度:
18条回答
607收藏
4810浏览
热门推荐
相关试题
class A; class B;...
360集团
C++
C语言
评论
(18)
来自
360公司2014校招笔试卷
(verbal)最近的研究显示,许...
言语理解与表达
2019
普华永道
人力资源
审计
税务服务
风险管理
管理咨询
行政管理
评论
(3)
来自
职能类模拟题14
运行 ldd hello 可以得到...
百度
C++
评论
(3)
(单选题)关于数组初始化说法错误的是:
华为
C++工程师
2019
评论
(7)
来自
2019华为网络精英挑战...
在放大电路中,抑制温漂的方法包括下...
模拟电路
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题