• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++位操作的常见用法小结

C++位操作的常见用法小结

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++2005 32位,c++2005 64位,c++2008 64位,c++2005sp1 64位下载,c++2008 32位等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文以实例形式对C++位操作的常见用法进行了总结。分享给大家供大家参考之用。具体方法如下:

在C++中位操作有6种基本操作符,按照优先级分别是:

取反   ~
移位   <<  >>
与      &
异或   ^
或      |

常用的用法有:

1 判断偶数,判断最低位是0还是1即可,比求模快

x % 2 != 0    //x正负都可以判断;不用x%2 == 1,因为如果x为负奇数,x%2=-1
x & 0x1 == 0 

</div>

2 交换两个数,不用中间变量

void mySwap(int &a, int &b)
{
  if(a == b)  //相等时也能得到正确结果,但是没必要了
    return;

  a ^= b;
  b ^= a;
  a ^= b;
}

</div>

3 求整数的二进制表示中1的个数,不用一个一个的移位判断

int numOfBit1(int a)
{
  int cnt = 0;
  while(a != 0)
  {
    ++cnt;
    a &= a - 1;  //将最右边的1置为0;正负都可计算,负数是按照补码计算的,最后的符号位也被统计
  }
  return cnt;
}

</div>

4 正负转换,不使用正负号。不管正数负数,取反后加1即可

int a = 1;
a = ~a + 1;  //a变成-1
a = ~a + 1;  //a又变成1

</div>

5 求绝对值,不判断正数负数,不使用正负号,返回绝对值

int myAbs(int a)
{
  int sign = a >> 31;    //如果a为正数,sign为0;否则sign为-1,即0xFFFFFFFF
  return (a^sign) - sign;  //(a^0)-0 = a, (a^-1)-(-1) = ~a+1 = -a ,a^-1即为a取反
}

</div>

希望本文所述对大家C++程序设计的的学习有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何在C++中实现按位存取
  • C++位操作的常见用法小结

相关文章

  • 2017-05-28深入解析C++编程中线程池的使用
  • 2017-05-28解析一个有关sizeof用法的题目--sizeof(i++)
  • 2017-05-28C++临时性对象的生命周期详细解析
  • 2017-05-28C++指针数组、数组指针、数组名及二维数组技巧汇总
  • 2017-05-28C++之友元:友元函数和友元类详解
  • 2017-05-28c语言连接mysql数据库的实现方法
  • 2017-05-28深入const int *p与int * const p的区别详解(常量指针与指向常量的指针)
  • 2017-05-28利用简洁的C语言代码解决跳台阶问题与约瑟夫环问题
  • 2017-05-28C语言 以字符串的形式读写文件详解及示例代码
  • 2017-05-28C++中函数重载实例详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言打印华氏-摄氏温度对照表的方法
    • C++构造函数初始化顺序详解
    • 深入分析父子线程、进程终止顺序不同产生的结果
    • Cocos2d-x UI开发之CCControlColourPicker控件类使用实例
    • linux下access函数的用法介绍
    • C++中引用(&)的用法与应用实例分析
    • VC读配置文件实例
    • 二分查找算法在C/C++程序中的应用示例
    • 基于WTL 双缓冲(double buffer)绘图的分析详解
    • C++ namespace相关语法实例分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有