采访:翻转比特

发布于 2024-09-08 00:47:51 字数 110 浏览 3 评论 0原文

最近看到一个面试题,问了这样的问题:

给定一个32位数字,写伪 翻转倒数第二位的代码

最好/最简单的方法是什么?

I recently saw an interview question asking the following:

Given a 32 bit number, write pseudo
code to flip the second last bit

What is the best/easiest way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

眼角的笑意。 2024-09-15 00:47:51
#define MASK 0x00000002 

新=旧^面具

#define MASK 0x00000002 

new = old ^ MASK

椒妓 2024-09-15 00:47:51

我看到一些答案将“最后一位”解释为 MSB,其他答案将“最后一位”解释为 LSB。也许他们正在寻找足够聪明的候选人,在编写代码之前停下来并要求澄清。这在现实工作中非常重要。

I see some answers interpret "last bit" as MSB, others as LSB. Perhaps they're looking for candidates smart enough to pause and ask for clarification before cranking out code. That's very important in real-world work.

愛放△進行李 2024-09-15 00:47:51
X ^ (1<<n) will toggle the state of nth bit in the number X.
X ^ (1<<n) will toggle the state of nth bit in the number X.
无人问我粥可暖 2024-09-15 00:47:51

与 2 异或。例如 i = i ^ 2

Exclusive Or with 2. For example i = i ^ 2

南薇 2024-09-15 00:47:51
a = 0x80000000; // the second last bit set
if( i & a == 0) // not set in i -> set it
  i |= a;
else // set -> un-set it in i
 i &= ~a;

编辑:arg,当然你可以对其进行异或:-)但是 2 是第二位而不是倒数第二位。也许更好地讨论 MSB 和 LSB。

a = 0x80000000; // the second last bit set
if( i & a == 0) // not set in i -> set it
  i |= a;
else // set -> un-set it in i
 i &= ~a;

edit: arg, of course you can XOR it :-) But 2 is the second bit not the second last bit. Maybe better to talk about MSB and LSB.

又爬满兰若 2024-09-15 00:47:51

使用按位异或运算符?

use a bitwise XOR operator?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文