作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道您可以通过将一个值与 0 进行 AND 运算来进行位掩码。但是,我如何既可以对某些半字节进行位掩码又可以保留其他半字节。换句话说,如果我有 0x000f0b7c 并且我想屏蔽除 b 之外的所有内容(换句话说我的结果将是 0x00000b00),我将如何使用 AND 来执行此操作?是否需要多个步骤?
最佳答案
如果您以二进制形式表示值,您可以更好地理解 bool 运算。
两个二进制数字之间的AND运算,如果两个二进制数字的值为1,则返回1,否则返回0。
假设你有两个二进制数字a和b,你可以建立如下的“真值表” :
a | b | a AND b ---+---+--------- 0 | 0 | 0 1 | 0 | 0 0 | 1 | 0 1 | 1 | 1
掩码操作包括将给定值与“掩码”进行“与”运算,其中需要保留的每一位都设置为 1,而要丢弃的每一位都设置为 0。这是通过将给定值的每一位与掩码的相应位进行“与”运算来完成的。
给定值 0xf0b7c 可以转换如下:
f 0 b 7 c (hex)1111 0000 1011 0111 1100 (bin)
如果您只想保留与“b”值对应的位(位 8..11),您可以这样屏蔽它:
f 0 b 7 c1111 0000 1011 0111 11000000 0000 1111 0000 0000
值 0000 0000 1111 0000 0000 可以转换为十六进制,值为 0xf00。
因此,如果您计算“0xf0b7c AND 0xf00”,您将获得 0xb00。
关于logic - 如何使用 AND 运算符对数字(十六进制)进行位掩码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35026171/
我是一名优秀的程序员,十分优秀!