原文:位运算反(~)与(&)异或(^)或(|)右移(>>)左移(<<)

先知道这两个二进制数据的特点:   1=0000 0000 0000 0000 0000 0000 0000 0001

-1=1000 0000 0000 0000 0000 0000 0000 0001

1.最高位(首位)表示正负(0为正,1为负)

2.最低位(末位)表示奇偶(0为偶,1为奇)

一、按位取反(~)

十进制1按位取反后=?

分析:

1. 十进制1转为二进制为:1= 0000 0000 0000 0000 0000 0000 0000 0001

2. 按位取反:把原来的二进制得到一个新的二进制,原来是0的则变为1,1的则变为0。

1按位取反后得到   1111 1111 1111 1111 1111 1111 1111  1110

3.二进制的最高位(首位)表示正负(1为负,0为正),如果是负数,如果是负数,则需要用计算机中的补码来表示。

补码:补码=符号位(最高位)以后按位取反再加1.

补码为   1000 0000 0000 0000 0000 0000 0000  0010

4. 结果为:把补码转为十进制:  -2;

~1==-2

十进制-1按位取反后=?

1.            -1的二进制是 1000 0000 0000 0000 0000 0000 0000 0001

2. 负数是以其补码的形式储存的

-1在计算机中存的是 1111 1111 1111 1111 1111 1111 1111 1111

3.    按位取反:             0000 0000 0000 0000 0000 0000 0000 0000

4.结果为:转为十进制:0

~-1==0

二、按位与and(&)

按位与and(&): 相同位的两个数字都为1,则为1;若有一个不为1,则为0。

25&3=>    25= 0000 0000 0000 0000 0000 0000 0001 1001

3= 0000 0000 0000 0000 0000 0000 0000 0011

-------------------------------------------------------------------------------------

0000 0000 0000 0000 0000 0000 0000 0001

25&3==1

三、按位异或(^)

按位异或(^):相同位不同则为1,相同则为0

25^3=>    25= 0000 0000 0000 0000 0000 0000 0001 1001

3=  0000 0000 0000 0000 0000 0000 0000 0011

-------------------------------------------------------------------------------------

0000 0000 0000 0000 0000 0000 0001 1010

25&3==26

四、按位或(|)

按位或(|):相同位只要一个为1即为1。

25|3=>    25=  0000 0000 0000 0000 0000 0000 0001 1001

3=  0000 0000 0000 0000 0000 0000 0000 0011

-------------------------------------------------------------------------------------

0000 0000 0000 0000 0000 0000 0001 1011

25|3==27

五、右移(>>)

     把1的位置向右移n位,超出的就舍掉

15=0000 0000 0000 0000 0000 0000 0000 1111

15>>1=0000 0000 0000 0000 0000 0000 0000 0111

15>>1=7

:右移1位即除以21;,并且取整。

n>>4==n/(24)

64>>4==4

六、左移(<<)

把1的位置向左移n位,超出的就舍掉

:左移1位即乘以21;,并且取整。

n<<4==n*24

2<<4==32

位运算反(~)与(&)异或(^)或(|)右移(>>)左移(<<)的更多相关文章

  1. php位运算 与 或 异或 取反

    <?php /** php中有4个位运算,分别是&与 |或 ^异或 ~取反 & 两位全为1,结果为1 | 有一位为1,结果为1 ^ 一个为0,一个为1,结果为1 ~ 取反0-&g ...

  2. <位运算> 任意二进制数 异或两个相同的二进制数 还是原本的值

    二进制,即0与1. 因为两个相同的二进制 异或必为0.(类似于不进位加法) 二进制里与0异或为其原本的0与1.. 可得任意二进制数 异或两个相同的二进制数 还是原本的值. 可用于交换和加密.

  3. LeetCode解题中位运算的运用

    位运算是我最近才开始重视的东西,因为在LeetCode上面刷题的时候发现很多题目使用位运算会快很多.位运算的使用包含着许多技巧(详细可以参考http://blog.csdn.net/zmazon/ar ...

  4. 利用位运算进行a+b的计算(Java&&Python)

    题目链接 需要用到的位运算操作:异或(^).与(&).右移(<<) 异或运算:又称不进位加法,a^b得到的结果为a与b相加,但是需要进位的地方不进位得到的结果 与运算:找出来a和b ...

  5. #C语言初学记录(位运算)

    位运算 Problem Description7-1 数组元素循环右移问题 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由 ...

  6. php实现不用加减乘除号做加法(1、善于寻找资源:去搜为什么位运算可以实现加法,里面讲的肯定要详细一万倍)

    php实现不用加减乘除号做加法(1.善于寻找资源:去搜为什么位运算可以实现加法,里面讲的肯定要详细一万倍) 一.总结 1.善于寻找资源:去搜为什么位运算可以实现加法,里面讲的肯定要详细一万倍 二.ph ...

  7. Java中的位运算

    昨天去面试的时候做到了一道Java的位运算题目,发现有个运算符不懂:">>>",今天特地查了一下,并小结一下常见的位运算符号: ~  按位非(NOT)(一元运算) ...

  8. Java位运算加密

    创建一个类,通过位运算中的”^"异或运算符把字符串与一个指定的值进行异或运算,从而改变字符串每个字符的值,这样就可以得到一个加密后的字符串.当把加密后的字符串作为程序输入内容,再与那个指定的 ...

  9. Java的位运算

    左移位操作 左移位运算的符号为[<<],左移位运算符左面的操作元称作被移位数,右面的操作数称作移位量. 左移位运算是双目运算符,操作元必须是整型类型的数据,其移动过程是:[a <&l ...

随机推荐

  1. Something broke! (Error 500)——reviewboard

    Something broke! (Error 500) 1.什么时候会出现? 不清楚,出现过几次 2.解决手段及方法: 更改/www_rb/conf/settings_local.py文件,将DEB ...

  2. 在EF中执行SQL语句

    你可能要问,我用EF不就为了避免写SQL吗?如果要写SQL我不如直接用ADO.NET得了.话虽然这么说没错,可有些时候使用EF操作数据还是有一些不方便,例如让你根据条件删除一组记录,如果按照正常的流程 ...

  3. java—— 调用系统命令

    调用所在环境的命令 链接:http://blog.csdn.net/yy6060/article/details/6311916 1 import java.io.*; 2 class Exec{ 3 ...

  4. POJ3080:Blue Jeans

    Description The Genographic Project is a research partnership between IBM and The National Geographi ...

  5. java垃圾回收算法

    1.标记-清除 2.标记-复制 3.标记-整理 4.分代混合算法

  6. IOS开发之Post 方式获取服务器数据

    //1.创建post方式的 参数字符串url +(NSString *)createPostURL:(NSMutableDictionary *)params { NSString *postStri ...

  7. ubuntu下libjson-c库的使用问题备忘

    首先安装libjson的c库 #apt-get install libjson0-dev libjson0 安装好后查看/usr/include/json下是否有头文件,有就对了! gcc -o ...

  8. iOS8新特性之基于地理位置的消息通知UILocalNotification

              苹果在WWDC2014上正式公布了全新的iOS8操作系统. 界面上iOS8与iOS7相比变化不大,只是在功能方面进行了完好.                             ...

  9. [AngularJS] ngMessageFormat

    ngMessageFormat can be installed via npm using the following command: $ npm install angular-message- ...

  10. vim命令---存阅

    命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filename 打开vim ...