【问题标题】:Most efficent way to add an nth place bit to an int [duplicate]将第 n 个位添加到 int 的最有效方法 [重复]
【发布时间】:2019-03-21 01:51:38
【问题描述】:

将第 n 个位添加到 int 的最有效方法是什么?

我使用一个数字来跟踪具有相应索引的各种对象的布尔值,即。所有三个对象的 true 是二进制的 111 或 dec 的 7。我需要一种方法来更新其中一个对象的布尔值。

我最初的想法是这样做: 值 += 2^(索引)

但我觉得这可能不是最有效的方法。有更好的选择吗?或许,使用bit twiddling。

【问题讨论】:

  • 您确实必须指定一种语言才能获得有意义的答案。对于 C、C++ 和 C#,请参阅 stackoverflow.com/q/7285296/11683
  • 谢谢你回答了我的问题
  • 好的。有没有一种好方法可以检查是否设置了位,而无需存储一堆掩码,也无需使用负数方法,因此它可以独立于系统?
  • 你打算如何实现 2^Index ?

标签: algorithm binary bit-manipulation bit


【解决方案1】:

这里的加法不应该是正确的操作。

您(可能)要查找的操作是bit masking

给定您的值:XYZ,即三位。如果您想将Y 设置为true,您将使用带有010 掩码的OR 操作应用掩码。

   XYZ
OR 010
   ---
   X1Z

但如果您想将Y 设置为false,请使用AND101 掩码:

    XYZ
AND 101
    ---
    X0Z

此操作的性能取决于您使用的语言。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 2019-03-20
    • 1970-01-01
    • 2013-05-19
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多