C语言按位左移运算规则

2020-07-28 社会 180阅读

C语言中按位左移的运算符为<<,其规则如下:

对于操作a<

1 按照二进制值每位向高位(书写上是向左)移动n位;

2 最高位(最左边的)n位舍去;

3 最低位(最右边)填加n个0.


简单起见,用char型举例如下:

例一

0x12 << 3 =>

B00010010 << 3 =>

B10010 000(这里最高位的三个0被舍去,其它依次左移,最低位补三个0) =>

0x90

即0x12 << 3 = 0x90

例二

0x9E << 2 =>

B10011110 << 2 =>

B01111000 (最高位10舍去,最低位补两个0)=>

0x78


可以编写如下程序验证:

#include 
void check(char a, int n)
{
    printf("0x%hhx << %d = 0x%hhx\n", a, n, a<}
int main()
{
    check(0x12, 3);
    check(0x9e, 2);
    
    return 0;
}

其运行结果为

0x12 << 3 = 0x90
0x9e << 2 = 0x78

可以看到与我们计算结果是相符的。

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com