Skip to content

C 与 C++ 语言中对负数的左移与右移浅析

Posted on:April 16, 2023 at 01:00 PM

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。


[迁移博客]

C 与 C++ 语言中对负数的左移与右移浅析

Demo

int main(void)
{
    unsigned char a = 4 | 7;
    a <<= 3;
    unsigned char b = 5 & 7;
    b >>= 3;
    unsigned char c = 6 ^ 7;
    c = ~c;
    unsigned short d = (a ^ c) << 3;
    signed char e = -63;
    e <<= 2;

    printf("a:%d , b:%d , c:%d , d:%d\n", a, b, c, (char)d);
    printf("e:%#x\n", e);
}

参阅标准

ISO/IEC 9899

根据此标准的 6.5.7 Bitwise shift operators 一节来看:

Microsoft C++ 语言参考

根据微软的 C++ 编译器实现,在 X86/X64 的架构下:


参考