C++中>>,&运算符可以获取一个int类型数据的高八位和低八位。在C++中一个int类型的整型数据采用两个字节存储,占用16位。但在项目当中经常用到高低字节的互换。这就需要把一个int类型的数据的高字节和低字节拆分开来重新组合。
一个16位整数(int)是由2个字节(Byte)组成的,每个字节占内存8个位(bit),那么这个整数表示成2进制就是16位,高8位和低8位就是前后这两个部分。数据在计算机中存储是从低位开始向高位进位的,高8位指第8到第15位,低8位指第0位到第7位。
>>右移运算符,将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0。我们可以用这个运算符把一个整数右移8位,这样就舍弃了这个整数的低八位,只保留高八位了。
&按位与运算符,如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。把一个整数和0x00ff求与,就会舍弃高八位,只保留第八位了。
c++代码如下:
int value=15;//需要拆分的整数
unsigned char data[2]={0x00,0x00);//定义数组并初始化赋值
data[0] = ((short int)(value)) >> 8;//高八位
data[1] = ((short int)(value)) & 0x00ff;//低八位
这样经过把一个int整数进行>>,&运算后高八位保存在data[0]中,低八位保存在data[1]中。