以下移位操作的结果是什么:
((((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) );
}