C++面试题集锦:二进制相关

马谦马谦马谦 2018年1月18日22:35:05 发表评论
文章最后编辑于:2018-1-18 22:47:38

例题一

不使用额外变量,通过一个表达式判断整数n是否为2^x,不能使用循环语句。

思路

2^x = 2, 4, 8, 16 ...,二进制形式为10, 100, 1000, 10000,如果n减1后和n做与运算答案为0,就说明它满足2^x

答案

例题二

f(729, 271)

思路

x&y是相同的位与,等于x和y相同位的和的一半。(x^y)是取出x和y不同位,>>1也相当于除以2。

所以整个表达式合起来就是x和y相同位的一半加上x和y不同位的一半——即x和y的和的一半

答案

本文共执行44次查询,耗时0.266秒!
马谦马谦马谦

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: