rEXTINT1 &= ~(0x777777<<0); rEXTINT1 |= (0x333333<<0);
时间: 2023-11-04 09:38:52 浏览: 27
这是一段 C 语言代码,其中使用了位运算符。它的作用是将 rEXTINT1 寄存器中的低位字节的某些位清零,然后将这些位设置为特定的值。具体来说,它将 rEXTINT1 中偏移量为 0 的字节中每个 nibble 的低 3 位清零,然后将每个 nibble 的低 2 位设置为 0b11。这个操作的目的可能是配置某些外部中断的触发条件。
相关问题
a&=~(0x01<<1)和a&=~(0x10)相同吗
不相同。
首先,0x01<<1表示将二进制数0b00000001向左移位1位,变成0b00000010,即十进制数2。而0x10表示十六进制数16,即二进制数0b00010000。
其次,~运算符表示按位取反,将0变成1,将1变成0。因此,~(0x01<<1)的结果是0b11111101,而~(0x10)的结果是0b11101111。
最后,&运算符表示按位与,只有两个数对应位上都是1时,结果才为1。因此,a&=~(0x01<<1)的意思是将a的二进制数第2位清零,而a&=~(0x10)的意思是将a的二进制数第5位清零。这两个表达式的作用是不同的。
val &= ~(0x07<<8)详细解释一下
这段代码是对变量 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,其他位的值不变。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)