【发布时间】:2019-08-15 16:01:53
【问题描述】:
我对按位和所有有趣的爵士乐都很陌生,所以不太了解它的所有内容。我有两个问题。
A) 标志和位移问题
我最近遇到了类似下面的东西
if (flags & (1 << 3)) {
function_A();
}
我可以看到是一个 AND 运算符和一个左移位,但是当我通常遇到左移位时,我不确定标志的作用及其用途(据我了解,它是一个布尔值的集合以节省空间),它是诸如 10100101
B) 也是一个标志问题(与第一个问题有关)。
TCP 包含由字节 13 中的 1 位标志组成的数据包。字节 13 的位(我相信是位 1)是请求连接的 SYN 标志。要“请求连接”,假设您可以访问它,假设它存储在某种数组中并且通过 packetNO[13] 访问,那么您将如何准确地调用该位。会和下面类似吗?
if (packetNO[13] & (1 << 2)) {
}
上述检查是否已请求连接,通过将真实位移动到位置 2(位 1?)
请向我解释这些概念并提供示例以提供帮助,我不确定我是否正确。
【问题讨论】:
标签: arrays bit-manipulation bitwise-operators bit-shift bitflags