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

马谦马谦马谦 C/C++评论224字数 319阅读 1 分 3 秒阅读模式

例题一

不使用额外变量,通过一个表达式判断整数 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 的和的一半

答案

 
马谦马谦马谦
  • 本文由 马谦马谦马谦 发表于 2018 年 1 月 18 日 22:35:05
  • 转载请务必保留本文链接:https://www.dyxmq.cn/program/code/c-cpp/cpp-mianshi-binary-question.html
C/C++中struct和class的区别 C/C++

C/C++中 struct 和 class 的区别

一、 class 和 struct 的区别 C++中 class 和 struct 的区别: 继承权限,struct 的默认继承权限为 public,class 的默认继承权限为 private 。 访问权限,struct 的默...
指针和引用的区别 C/C++

指针和引用的区别

区别: 指针是一个变量类型,引用只是一个变量别名。 指针可以不用初始化,引用必须初始化。 指针可以指向空地址,引用不能指向空。 指针初始化后可以修改,引用不能修改。 其他: 引用本质上也是一个指针,内...
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证