字母移位C语言,C语言之位移位运算符和按位运算符

近期做串口实验,遇到将十六进制转换成char型字符的问题,程序中用到了位移位运算符和按位或运算符

a. 位移位运算符

<< 左移,>>右移

运算符左边为移位对象,右边为要移的位数。移位对象为整数值(若 char a = 61, 则 a 也可以作为移位对象,若 char a = ‘a’,则会出错。总之,你要移的对象一定是一个整数)。若为左移,不论是有符号还是无符号,移出位丢失,空出位补0;若为右移,对于有符号,空出位补原符号位。

例子:

int a = 5;

a >>= 1; // 此时a为2,右移一位相当于除2(速度上要比除法快)

注:a >> 1, a 本身的值不会改变, a >>= 1 相当于 a = a >> 1

b. 按位或运算符

char a;

char b = 4;

char c = 12;

a = (b << 4) | c;

打印 a 为 'L'

b 的二进制表示为 100, 左移4位为 1000000, c 的二进制表示为 1100,二者或运算(相应位有1则1),结果为 1001100,对应十进制为76,对应字符‘L’。

你可能感兴趣的:(字母移位C语言)