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

时间:2019-11-08 13:07:36

标签: c bit-shift

以下移位操作的结果是什么?

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

我希望:

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

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

1 个答案:

答案 0 :(得分:2)

您可以运行代码并亲自查看。让我为您写一个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) );
}