c语言左移5位,c语言左移位运算符怎么用

发布时间:2022-11-26

本文目录一览:

1、c语言左移操作
2、C语言左位移运算符和右位移运算符是什么意思,怎么运算,举个例子..
3、C语言按位左移运算规则

c语言左移操作

这个是将内存地址0x0000里的数右移5位并强制转化成UINT8,具体是干什么的要看具体的代码了,一般是截取数据的某几位进行操作。

C语言左位移运算符和右位移运算符是什么意思,怎么运算,举个例子..

就是把一个数转化成二进制再直接对他进行操作。 例如: 45 >> 2
45的二进制为:101101
右移两位就为: 001011
001011再转化为十进制为:11
所以45 >> 2 = 11
左移运算符
45 << 2
45的二进制为:101101
左移两位就为:10110100
10110100再转化为十进制为:180
所以45 << 2 = 180

C语言按位左移运算规则

C语言中按位左移的运算符为<<,其规则如下: 对于操作a << n

  1. 按照二进制值每位向高位(书写上是向左)移动n位;
  2. 最高位(最左边的)n位舍去;
  3. 最低位(最右边)填加n个0。
    简单起见,用char型举例如下:

例一

0x12 << 3 =
B00010010 << 3 =
B10010000(这里最高位的三个0被舍去,其它依次左移,最低位补三个0)=
0x90
0x12 << 3 = 0x90

例二

0x9E << 2 =
B10011110 << 2 =
B01111000(最高位10舍去,最低位补两个0)=
0x78
可以编写如下程序验证:

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

其运行结果为:

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

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