在c++中,经常会对具体整型数据的位进行操作。例如:要获取整数12(0B1100)在第1位上数值(为0),第2位上数值(为1),第3位上数值(为1)。在此,我使用位操作符中的“&”进行读取。
因为整数中的1,2,4,8(2^n n=0,1,2,3,4.....)用二进制表示分别为0B0001,0B0010,0B0100,0B1000,保证了只有一位为1,其余均为0的特性,可以“过滤”出特殊位置出的数值。
1 int i(12); //0x1100 2 int j01 = (12 & 4) / 4; //(0x1100 & 0x0100) / 0x0100 3 int j02 = (12 & 8) / 8; //(0x1100 & 0x1000) / 0x1000 4 ... 5 //输出j01,j02 6 j01为1, 7 j02为1
在c++中,可以对二进制、八进制、十六进制数直接进行操作,只需在赋值时标明进制,0B或0b,0,0x。
1 quint16 i = 0b110010; 2 qDebug()<< "i = " << i <<endl; 3 4 quint16 i01 = 017224; 5 qDebug()<< "i01 = " << i01 <<endl; 6 7 quint32 i02 = 0x3F1; 8 qDebug()<< "i02 = " << i02 <<endl; 9 10 11 结果: 12 13 i = 50 14 15 i01 = 7828 16 17 i02 = 1009