博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
位运算
阅读量:6452 次
发布时间:2019-06-23

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

简介

众所周知,在计算机中,任何对数的处理都会回归于对相应二进制数的处理。我们把这对应的二进制形式称为机器数(最高位储存符号,“0”是“+”,“1”是“-”),位运算可以对机器数直接进行一元操作(有一个被处理数)或二元操作(有两个)。在平时,位运算比部分正常运算略快;不过当问题本身涉及到对二进制数的转化与处理时,位运算更能发挥巨大的作用。

位运算符简介

  • 左移运算符 <<

对于一个二进制数,我们使用左移操作,它包含被操作值和移位值,左移操作就是将该数每一位上的数向左移动移位值,如0000 0000 0000 0011(3)向左移位1一位成为0000 0000 0000 0110(6).

v<

上述代码展示了左移运算符的使用,v是被操作的整数值,s是移动位数。

对于二进制数,我们知道每一位上等于右边一位的两倍。那么,左移一位即等于乘2。那么3<<1便等价于(1×2^1+1×2^0)×2=6。位移n位,以此类推,等于原值的2^n倍。

  • 右移运算符 >>
v>>s

据左移运算符的功能类推可知,右移运算符即将每一位右移n位。位移后的值等于原值的1/2^n倍。

对于位移运算符,位移后腾出的位置用“0”填充,超出边界的值舍弃。

  • 按位反运算符 ~

位反运算符将每一位转换为它的反面,如“0”变为“1”,而“1”变为“0”。

  • 按位或运算符 |

对两个等长二进制整数值操作,若两个数的对应位中只要有一个及以上的“1”,结果新值中此位为“1”,其余情况此位则为“0”。

  • 按位异或运算符 ^

对两个等长二进制整数值操作,若两个数的对应位中只有一个为“1”,新值相应位为“1”,而若都是“0”或“1”,相应位为“0”。

  • 按位与运算符 &

对两个等长二进制整数值操作,若两个数的对应位中两个都是“1”,新值相应位为“1”,其余情况新值相应为皆为“0”。

在位运算中,对于负数还有一道特殊的处理工序。对于负数相应的二进制数,需要被当成补码来处理,位运算时是对相应的补码进行各种运算。而输出时又要将已经进行过位运算的补码,再转为原码进行输出。

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

你可能感兴趣的文章
MyBatis(1)——快速入门
查看>>
对软件工程课程的期望
查看>>
CPU高问题排查
查看>>
Mysql中文字符串提取datetime
查看>>
CentOS访问Windows共享文件夹的方法
查看>>
IOS 与ANDROID框架及应用开发模式对比一
查看>>
由中序遍历和后序遍历求前序遍历
查看>>
JQUERY Uploadify 3.1 C#使用案例
查看>>
coursera 北京大学 程序设计与算法 专项课程 完美覆盖
查看>>
firewall 端口转发
查看>>
wndows make images
查看>>
FS系统开发设计(思维导图)
查看>>
Computer Go Programming 学习
查看>>
我学习参考的网址
查看>>
婚姻 至理名言
查看>>
DEDE自带的采集功能,标题太短的解决方法
查看>>
easyui的combotree以及tree,c#后台异步加载的详细介绍
查看>>
C# string函数
查看>>
1、串(字符串)以及串的模式匹配算法
查看>>
正则表达式30分钟入门教程
查看>>