Я довольно плохо знаком с побитовым и всем этим забавным джазом, и поэтому не совсем понимаю все об этом.У меня два вопроса.
A) Вопрос о флагах и битах
Я недавно столкнулся с чем-то похожим на приведенное ниже
if (flags & (1 << 3)) {
function_A();
}
Я вижуis является оператором AND и сдвигом левого бита, однако я не уверен, что делает флаг и его назначение (насколько я понимаю, это набор логических значений для экономии места), когда я обычно сталкиваюсь с левыми сдвигами, это что-то вроде 10100101<< 3, что было бы 00101000 (я полагаю), но это, похоже, не так.Итак, каковы именно условия, при которых вышеуказанная функция будет вызываться? </p>
B) Также вопрос о флажках (связанный с первым из-за его характера).
TCP содержат пакеты, которые состоят из 1-битных флагов в байте 13. Существует бит 13-го байта (я полагаю, 1-й бит), который является флагом SYN для запроса соединения.Чтобы «запросить соединение», как именно вы будете называть этот бит, предполагая, что вы можете получить к нему доступ, предполагая, что он хранится в каком-то массиве и доступен VIA packetNO [13].Будет ли это похоже на ниже?
if (packetNO[13] & (1 << 2)) {
}
вышеупомянутая проверка, было ли запрошено соединение, путем смещения истинного бита в позицию 2 (бит 1?)
Пожалуйста, объясните мне эти понятия и предоставьте примеры, чтобы помочь, есливозможно, я не уверен, прав ли я или нет.