代码之家  ›  专栏  ›  技术社区  ›  Pieter van Niekerk

访谈:翻转位

  •  5
  • Pieter van Niekerk  · 技术社区  · 15 年前

    我最近看到一个面试问题,问了以下问题:

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

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

    6 回复  |  直到 13 年前
        1
  •  8
  •   Daniel Băluţă    15 年前
    #define MASK 0x00000002 

    新建=旧^掩码

        2
  •  6
  •   DarenW    15 年前

    我看到一些答案将“最后一位”解释为MSB,另一些解释为LSB。也许他们在寻找聪明到可以在启动代码之前暂停并要求澄清的候选人。这在现实工作中非常重要。

        3
  •  5
  •   josh    15 年前
    X ^ (1<<n) will toggle the state of nth bit in the number X.
    
        4
  •  3
  •   leonm    15 年前

    独家或2.例如i=i^2

        5
  •  3
  •   aggsol    15 年前
    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,当然可以执行xor,但2是第二位,而不是最后一位。也许最好谈谈MSB和LSB。

        6
  •  0
  •   Yellowfog    15 年前

    使用位异或运算符?

    推荐文章