c++ - 位技巧和魔术

标签 c++ bit

我正在用 C++ 编写一个程序,它必须尽可能地精简。我需要一些关于 if/else 语句的帮助。这是代码:

if (lines & 1 << ((d & 1) * 30 + 5 * l + c)) {
    cout << "Invalid";
} else {
    lines |= 1 << ((d & 1) * 30 + 5 * l + c);
}

我在这里做的是:验证某个位是否设置为 1 并且我计算出一些东西,如果不是,我将其设置为 1。有什么方法可以将我验证的 2 行组合起来以及我在 if 正文中将位设置为 1 的位置?

lines & 1 << ((d & 1) * 30 + 5 * l + c)
lines |= 1 << ((d & 1) * 30 + 5 * l + c)

我在想像这样的事情:

if (lines |= .... )

它应该做的是:验证位是否为 1 并进入 if 主体,如果不是(或已经)则将其设为 1。

抱歉我的英语不好和这个愚蠢的请求,但我想不出办法去做,这让我发疯。

P.S: 当我输入方程式时,是否有任何网站/计算器可以给我一个 bool 公式?例如:3 .. .. = -1。我在这里需要操作数和运算符。

最佳答案

if (lines == (lines|= mask)) cout << "Invalid";

关于c++ - 位技巧和魔术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43377037/

相关文章:

c++ - "Vector subscript out of range",在返回语句?

C++/SDL 渲染文本

c++ - 数字中设置的位数

kotlin - 如何在 Kotlin 中获取 Int 的二进制表示

c - 搜索二进制数

c - 如何从 32 位数字中提取位

c++ - 在 C++ 中制作特定位 "0"

可克隆层次结构中的 C++ 复制构造函数和赋值

c++ - 如何从另一个 Qt 程序执行分离的 C++ 可执行文件?

c++ - pdCurses 在 Windows 中使用,与 3 个 gcc 宏混淆