【问题标题】:Bitwise - How can I check if a binary number contains another?按位 - 如何检查二进制数是否包含另一个?
【发布时间】:2014-02-10 23:45:49
【问题描述】:
  A  = 110000000    -    384 Blue+Red
  B  = 011000010    -    194 Green+Black+Red

  A & B =   C  = 010000000    -    128 Red

如何检查 B 是否包含 A 中的所有位以及其他位?在上述情况下,我想得到“假”。

我正在使用 XCode 和 Objective-c,但据我所知,这并不重要

【问题讨论】:

  • 不清楚您的示例中颜色指的是什么。我想您的问题是“如何检查数字 A 中设置为 1 的所有位是否也设置为数字 B 中的 1?”
  • @franssu 已编辑答案

标签: c++ c binary bit-manipulation


【解决方案1】:

如果A & B(即交集)等于A,则B包含A:

(a & b) == a

类似于

a ⊆ b ↔ (a ∩ b) = a

来自集合论。

【讨论】:

  • a ⊆ b ↔ (a ∩ b) = a 带我回到几年前,谢谢!
【解决方案2】:

如果您的意思完全相同,则测试为A == B。

如果您的意思是B 必须具有在A 中设置的所有位,也许还有其他(A & B) == A。

【讨论】:

  • 当然你的测试不会打印任何东西:B 的值不包含A 值的所有位,所以你得到false,正如你所说的那样.
【解决方案3】:

使用 ex-nor

 In C ^ is ex-or operator and ~ is complement, to get ex-nor use ~(a^b)

如果 a 和 b 相同,则 ~(a^b) 中的所有位都为 1

【讨论】:

  • 或者,等效地,a == b。我认为混淆不会增加任何东西。
  • 当然。要执行按位运算符,您可以使用上面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-30
  • 2023-03-24
  • 2021-06-06
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
  • 2018-05-09
相关资源
最近更新 更多