左移位操作。这个计算正确吗?

Left Bitshift operation. Is this calculation correct?

以下位移运算的结果是什么:

  ((((uint32)   0x0) << 6U) |  
   (((uint32)   0x2) << 4U) |  
   (((uint32)   0x0) << 2U) |  
   (((uint32)   0x1) << 0U))   

我预计:

0|32|0|1 = 33 十进制

这是对的还是我完全错了?

您可以 运行 代码并亲自查看。让我写一个printf声明给你。

#include <stdio.h>
#include <stdint.h>

int main (void)
{
  printf("%u\n",   
    (((uint32_t)   0x0) << 6U) |  
    (((uint32_t)   0x2) << 4U) |  
    (((uint32_t)   0x0) << 2U) |  
    (((uint32_t)   0x1) << 0U) );
}