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

问题描述 投票:-3回答:1

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

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

我希望:

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

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

c bit-shift
1个回答
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) );
}
© www.soinside.com 2019 - 2024. All rights reserved.