当前位置:  编程技术>c/c++/嵌入式

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

    来源: 互联网  发布时间:2014-10-28

    本文导语:  本文以实例形式对C++位操作的常见用法进行了总结。分享给大家供大家参考之用。具体方法如下: 在C++中位操作有6种基本操作符,按照优先级分别是: 取反   ~ 移位   与      & 异或   ^ 或      | 常用的用法有:...

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

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

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

常用的用法有:

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

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

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

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

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

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

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

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

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

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取反
}

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


    
 
 

您可能感兴趣的文章:

  • C++ Stacks(堆栈) 成员 操作:比较和分配堆栈
  • C++的XML操作库 XSD/e
  • C++ Strings(字符串) 成员 Operators:操作符,用于字符串比较和赋值
  • C++数据库操作接口 SmartDB
  • C++ I/O 成员 flags():操作flags
  • gnu c++ 中,new 操作失败的话返回是0还是什么?
  • C++ I/O 成员 width():操作域宽度
  • Linux下用C++操作XML数据库
  • C++操作符(Operator)用法(new和重载)
  • unix下C++代码中如何进行数据库操作?给个完整代码学习学习
  • C++ stl队列Queue用法介绍:删除,插入等操作代码举例
  • C++的JSON操作库 Talkson
  • TinyXML(c++下操作xml的库)介绍,下载地址及使用代码举例
  • C++ 网络抓包和操作库 libtins
  • c++ stl multimap基本操作使用技巧详细介绍
  • 解析c++中的默认operator=操作的详解
  • c++ STL关联式容器Map成员函数介绍及查找(find()),插入(insert()),删除(erase())等操作代码举例
  • linux下的C库和WIN下的C库(甚至C++库)区别大吗?比如子目录操作函数等等。
  • c++ I/O库及I/O流操作标志介绍(iostream、fstream等类)
  • C++操作MySQL大量数据插入效率低下的解决方法
  • c++的boost库多线程(Thread)编程(线程操作,互斥体mutex,条件变量)详解
  • C++中点操作符和箭头操作符的使用详解
  • jquery常用操作小结
  • C#中的位操作小结
  • c#对字符串操作的技巧小结
  • MongoDB在PHP中的常用操作小结
  • 六条比较有用的MySQL数据库操作的SQL语句小结
  • Python 时间操作例子和时间格式化参数小结
  • C#数据库操作小结
  • C#数据库操作小结
  • Bash Shell字符串操作小结
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • html form标签用法(js操作form)介绍及代码示例
  • .Net中的json操作类用法分析
  • 如何在一个用户对application操作时防止别的用户对它操作?(好难啊) iis7站长之家
  • Farpoint操作excel的用法举例
  • ado.net操作数据库的别样用法
  • C#在后台运行操作(BackgroundWorker用法)示例分享
  • jquery cookie插件用法 jquery操作cookie的例子
  • 有个操作符的用法,请教大家
  • C#中一些字符串操作的常用用法
  • c#对象中两种copy操作:深拷贝(Deep Copy)与浅拷贝(Shallow Copy)
  • 谁有操作系统PV操作的例子???谁有操作系统PV操作的例子???谢谢!!
  • Xcode介绍及创建工程和工程依赖操作步骤
  • 已安装了Windows操作系统,还想安装Linux。却还想在开机选择操作系统时由Windows引导,请问如何操作。在线等待
  • MyEclipse如何查看和设置文件编码格式相关操作
  • 请问LINUX操作系统是怎样对外围设备进行操作的
  • Html checkbox标签如何设置默认选中以及用js操作checkbox代码示例
  • 什么样的操作最耗费服务器的IO操作?
  • c/c++ 操作符优先级参考
  • 无操作系统下对U盘的操作
  • javascript操作html复选框checkbox:如何判断复选框是否被选中
  • 请问命令行操作下怎么改Linux操作系统的日期和时间?
  • Plesk 中操作和设置 Docker 容器
  • 正在学操作系统原理,做操作系统方面的实验用那种工具较好?
  • java操作excel2007文档介绍及代码例子
  • 请问16位操作系统和32位操作系统的区别?
  • Windows7 更新操作步骤
  • 基于linux操作系统之上操作LCD问题,急???
  • linux下不使用sudo命令执行docker的操作步骤
  • 哪位大侠知道Linux里的有名管道传送数据快不快?有名管道操作的过程是否有读写硬盘的操作?
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 如何在一个用户对application操作时防止别的用户对它操作?(好难啊)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3