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