小编R1S*_*S8K的帖子

C中的右左移位

我对C中的位移进行了一个小测试,所有的位移0,8,16位都可以,我理解发生了什么.

但32位右移或左移对我来说并不清楚,我正在进行测试的变量是32位长.

然后,我改变了32位变量,这些变量将保持移位结果,但32位右左移位是相同的!

这是我的代码:

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <inttypes.h>

int main() {
    uint32_t code = 0xCDBAFFEE;

    uint64_t bit32R = code >> 32;
    uint16_t bit16R = code >> 16;
    uint8_t bit8R = code >> 8;
    uint8_t bit0R = code >> 0;

    uint64_t bit32L = code << 32;
    uint16_t bit16L = code << 16;
    uint8_t bit8L = code << 8;
    uint8_t bit0L = code << 0;

    printf("Right shift:\nbit32R %.16x\nbit16R %x\nbit8R %x\nbit0R %x\n\n",
           bit32R, bit16R, bit8R, bit0R);
    printf("Left shift:\nbit32L %.16x\nbit16L …
Run Code Online (Sandbox Code Playgroud)

c bit-manipulation

1
推荐指数
1
解决办法
1447
查看次数

C中的“静态易失性”与“静态”对比“易失性”

static volatile组合使用变量说明符有什么区别?或者单独使用一个;喜欢staticvolatile在微控制器编程?

c variables specifier

1
推荐指数
3
解决办法
3万
查看次数

标签 统计

c ×2

bit-manipulation ×1

specifier ×1

variables ×1