【发布时间】:2014-08-08 20:43:56
【问题描述】:
我有一个关于bitwise not 和logical not 的问题,希望有人可以为我解答。
所以我知道以下作品:
!true == false
!false == true
我认为bitwise not 可以做同样的事情,但显然不能。
假设我有一个布尔值:
bool test = true;
然后当我打印出~test 时,输出为true。
如果布尔值是
bool test = false;
然后当我打印出~test 时,输出是true,这是预期的。但是,当我再次执行~test 时,它不会返回到false。
由于某种原因,bitwise not 无法将布尔值从 true 翻转为 false。
有人对此有答案吗?
【问题讨论】:
-
true = 非零(输入通常为 1),false = 零。 ~true = ~1 = 非零 = true。 ~false = ~0 = nonzero = true(虽然标题说的是假)
-
听起来是一个很好的理由不将
~应用于bool值。真正的答案是:使用!,而不是~。
标签: c++ boolean bit-manipulation