博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++的位操作符备忘
阅读量:5838 次
发布时间:2019-06-18

本文共 530 字,大约阅读时间需要 1 分钟。

首先在使用位向量操作符时强烈建议使用无符号类型、因为有符号类型在不同的机器上有不同的实现、所以有可能造成代码无法通用!

 

按位取反、按位或和按位与就不讲了、都比较简单易懂、讲按位异或吧

^、

比如有两个操作数、 12 ^ 17

所有按位操作都要先转换成二进制

12为1100

17为10001

按位异或的规则为同为1或者同为0则为0、否则都为1

下面比较两者、12的二进制为4位、要与17比较则12的二进制向左补0

01100    ->12

10001    ->17

11101    ->结果为29

 

 

 

再讲讲移位操作符吧、其实也狠简单、理解了就OK

比如这个例子 3 << 7

老例子、先转化成二进制、不过这里不需要两个都转化成二进制、只要把左操作数转化就可以了

现在这个例子是左移位方向、把3转化成二进制、然后向左移动

0011 -> 3

左移是右端空出的位用0来填补、这里的移位是3、所以结果为

110000000  -> 结果为384

 

右移也一样、3 >> 7、往0011右边移7位、由于3为int型、转认是4位的、所以向右移7位等于向左填充7个0、

000000011

但是除了前4位以外、后面都是长度之外被挤出去的、所以实际为

0000 ->也就是结果为0

 

 

 

 

参考文章:

转载地址:http://upjcx.baihongyu.com/

你可能感兴趣的文章
寻找链表相交节点
查看>>
AS3——禁止swf缩放
查看>>
linq 学习笔记之 Linq基本子句
查看>>
[Js]布局转换
查看>>
Hot Bath
查看>>
国内常用NTP服务器地址及
查看>>
Java annotation 自定义注释@interface的用法
查看>>
Apache Spark 章节1
查看>>
phpcms与discuz的ucenter整合
查看>>
Linux crontab定时执行任务
查看>>
mysql root密码重置
查看>>
33蛇形填数
查看>>
选择排序
查看>>
SQL Server 数据库的数据和日志空间信息
查看>>
前端基础之JavaScript
查看>>
自己动手做个智能小车(6)
查看>>
自己遇到的,曾未知道的知识点
查看>>
P1382 楼房 set用法小结
查看>>
分类器性能度量
查看>>
windows 环境下切换 python2 与 pythone3 以及常用命令
查看>>