左移位操作。这个计算正确吗?
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) );
}
以下位移运算的结果是什么:
((((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) );
}