近期做串口实验,遇到将十六进制转换成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语言之位移位运算符和按位运算符的全部内容,更多相关C语言之位移位运算符和按位运算符内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复