zoukankan      html  css  js  c++  java
  • 计算机的位运算小结

    补码:

    负数是以补码的形式表示,其转换方式:先按正数转换,然后取反加1。

    要将十进制的-10用二进制表示,先将10用二进制表示:
    0000 0000 0000 1010
    取反:
    1111 1111 1111 0101
    加1:
    1111 1111 1111 0110所以-10的二进制为:1111 1111 1111 0110

    按位与(&):

    把两个数转为二进制,只有当相应位上的数都是1时,该位才取1,否则该为为0。

    将10与-10进行按位与(&)运算:
    0000 0000 0000 1010
    1111 1111 1111 0110
    -----------------------
    0000 0000 0000 0010
    所以:10 & -10 = 0000 0000 0000 0010

    按位或(|):

    把两个数转为二进制,只要相应位上存在1,那么该位就取1,均不为1,即为0。

    将10与-10进行按位或(|)运算:
    0000 0000 0000 1010
    1111 1111 1111 0110
    -----------------------
    1111 1111 1111 1110
    所以:10 | -10 = 1111 1111 1111 1110

    按位异或(^)

    把两个数转为二进制,只有当相应位上的数字不相同时,该为才取1,若相同,即为0。可以理解为不进位的加法

    将10与-10进行按位异或(^)运算:
    0000 0000 0000 1010
    1111 1111 1111 0110
    -----------------------
    1111 1111 1111 1100
    所以:10 ^ -10 = 1111 1111 1111 1100

    取反(~)

    每个位上都取相反值,1变成0,0变成1。

    对10进行取反(~)运算:
    0000 0000 0000 1010
    ---------------------
    1111 1111 1111 0101
    所以:~10 = 1111 1111 1111 0101

    左移(<<)

    用来将一个数各二进制位全部向左移动若干位。

    对10左移2位(就相当于在右边加2个0):
    0000 0000 0000 1010
    --------------------
    0000 0000 0010 1000
    所以:10 << 2 = 0000 0000 0010 1000 = 40

    右移(>>)

    用来将一个数各二进制位全部向右移动若干位。

    对10右移2位(就相当于在左边加2个0):
    0000 0000 0000 1010
    --------------------
    0000 0000 0000 0010
    所以:10 >> 2 = 0000 0000 0000 0010 = 2

    其实这里面最有意思的属于异或了,

    比如有两组数,其中一组比另一组多出来一个数,如何找到这个数,用异或处理最简单,所有数^ 最后剩下的就是多出来的数!

    左移和右移

    左移(<<1)相当于*2、右移(>>1)相当于/2

  • 相关阅读:
    <--------------------------常用的API方法------------------------------>
    <--------------------------构造方法------------------------------>
    <--------------------------Java多态如何使用------------------------------>
    <--------------------------Java接口如何使用------------------------------>
    <--------------------------Java继承及抽象类------------------------------>
    Eclipse工具的设置
    Java数组逆序排列
    Java打印九九乘法表及倒打九九乘法表
    Java打印水仙花数
    Java实现选择排序以及冒泡排序
  • 原文地址:https://www.cnblogs.com/Robertzewen/p/11045364.html
Copyright © 2011-2022 走看看