C语言左移和右移怎么算(图文并茂,附带实例)
为了更好地理解左移和右移运算符的特性,我们选取两个整数 170 和 102,并使用自定义的 printBinary() 函数输出它们的二进制表示形式:

图 1 左移
例如:

图 2 右移
void printBinary(unsigned char dec)
{
// 数组初始化为 0
char bits[8] = {0};
int count = 0;
int quotient;
int remainder;
while(dec > 0)
{
remainder = dec % 2;
quotient = dec / 2;
dec = quotient;
bits[count] = remainder;
count++;
}
// 逆序输出所有二进制位
for (int i = 8 - 1; i >= 0; i--)
printf("%d", bits[i]);
putchar('\n');
}
printBinary(170);
printBinary(102);
将十进制数 170 作为 printBinary() 函数的参数,它将输出 170 对应的二进制数 10101010。将十进制数 102 作为 printBinary() 函数的参数,它将输出 102 对应的二进制数 01100110。C语言左移运算符<<
C语言中的左移(<<)是将一个整数的二进制位向左移动指定的位数,右侧用 0 填充。例如:printBinary(231); printBinary(231 << 1); printBinary(231 << 2); printBinary(231 << 3);运行结果为:
11100111
11001110
10011100
00111000

图 1 左移
C语言右移运算符>>
右移(>>)是将一个整数的二进制位向右移动指定的位数。对于无符号类型,空出来的位置用 0 填充;对于有符号类型,空出来的位置用 0 或 1 填充。这取决于编译器。例如:
printBinary(231); printBinary(231 >> 1); printBinary(231 >> 2); printBinary(231 >> 3);运行结果为:
11100111
01110011
00111001
00011100

图 2 右移
ICP备案:
公安联网备案: