SYSAHBCLKCTRL |= (1ul << 6); 这个c语言怎么理解,求解
SYSAHBCLKCTRL |= (1ul << 6); 这个c语言怎么理解,求解
就只有两个运算符:位或运算符 | 以及左移运算符<<
先看 |= , 跟 += -= 类似。x |= y 即 x = ( x | y )
| 是按位或。 1 | 1 = 1; 1 | 0 = 1; 0 | 0 = 0;数值以二进制的方式逐位计算。
<< 左移运算符,lul << 6 就是左移6位
假设 lul值为2, 二进制表示为 10,左移6位,就是10000000,
假设SYSAHBCLKCTRL值为3, 二进制就是 11,进行位或运算
(1ul << 6): 10000000
SYSAHBCLKCTRL: 00000011
结果: 10000011 即131
实际上<<左移n位的效果相当于乘以2的n次方。
同系列的“位运算符”还有:
位与 & 右移>>等
先看 |= , 跟 += -= 类似。x |= y 即 x = ( x | y )
| 是按位或。 1 | 1 = 1; 1 | 0 = 1; 0 | 0 = 0;数值以二进制的方式逐位计算。
<< 左移运算符,lul << 6 就是左移6位
假设 lul值为2, 二进制表示为 10,左移6位,就是10000000,
假设SYSAHBCLKCTRL值为3, 二进制就是 11,进行位或运算
(1ul << 6): 10000000
SYSAHBCLKCTRL: 00000011
结果: 10000011 即131
实际上<<左移n位的效果相当于乘以2的n次方。
同系列的“位运算符”还有:
位与 & 右移>>等

浙公网安备 33010602011771号