val &= ~(0x07<<8)详细解释一下
时间: 2024-03-29 19:37:18 浏览: 122
NR网络拒绝码-cause_value = 17 (0x11) (Network failure).docx
这段代码是对变量 val 进行位运算的操作。其中,符号 & 表示按位与运算,~ 表示按位取反运算。具体来说,这行代码的作用是将 val 的第8、9、10三个位清零,保留其他位的值不变。
先解释一下 ~(0x07<<8) 这个表达式。0x07是十六进制数,它的二进制表示为 00000111。<< 表示左移运算,将它左移 8 位,变成 0000011100000000。再进行按位取反运算,得到 1111100011111111。这个数的意义是在第8、9、10三个位上是0,其他位上是1。
那么, val &= ~(0x07<<8) 的意思就是将 val 与上述得到的 1111100011111111 进行按位与运算。按位与的规则是,只有两个数在相同位上都是1时,结果的对应位才是1,否则为0。因此,这个操作会将 val 中的第8、9、10三个位都变成0,其他位的值不变。
阅读全文