c++ - 如何检查 C++ 中的位?

标签 c++ debugging clion unary-operator

我在 C++ 中写道:

bool ret_is_syscall = (ret_inst_data & 0x00000000000000FF) == 0x000000000000050f;

但是 clion 说它总是错的,为什么?

我正在尝试检查最后 4 个是否为 0x050f

最佳答案

使用 0xFF 进行屏蔽后,仅留下 8 位可供查看,但 0x50f 占用了 11 位。所以这种比较永远不可能是正确的。

如果您只对最后 4 位感兴趣,请使用 0x0f 掩码:

bool ret_is_syscall = (ret_inst_data & 0x000000000000000f) == 0x000000000000000f;

否则,您需要至少0x7FF(11位)的掩码才能与0x50f进行比较:

bool ret_is_syscall = (ret_inst_data & 0x00000000000007ff) == 0x000000000000050f;

如果您对最后 4 个十六进制数字(16 位)感兴趣,请改用 0xffff 掩码:

bool ret_is_syscall = (ret_inst_data & 0x000000000000ffff) == 0x000000000000050f;

关于c++ - 如何检查 C++ 中的位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68202848/

相关文章:

c++ - #include <header.h>错误: Cannot open source file “header.h”

C# 覆盖 ToString 以便它在调试器中显示多行内容文本

c# - 如何访问同一解决方案中两个应用程序中的断点

c - 在 CLION 中安装 SDL

c++ - 当 clion 无法理解您的代码并重新格式化错误时,如何输入右大括号 `}`?

c++继承问题 "undefined reference to"

c++ - 对于英语单词来说,什么是好的哈希函数?

c++ - 我可以将 MSVCRT 静态链接到 mingw 吗?

html - 带有单选按钮的跨浏览器(平板电脑)错误

c++ - 如何为 Qt 框架配置 CLion IDE?