• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
qwz185_十秒耿直拆包选手
博客园    首页    新随笔    联系   管理    订阅  订阅
c++位运算及相关操作

在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 

 

posted on 2021-01-17 14:19  qz185_十秒拆包选手  阅读(262)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3