A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© WPeng 中级黑马   /  2015-8-7 22:41  /  611 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 WPeng 于 2015-8-8 00:06 编辑

位运算
    1)位运算是直接对整数在内存中的二进制位进行操作的方法(只能操作整型数据)。效率高
    2)&与运算
        (1)对应两个二进制位都为1时结果才为1,否则为0(有假为假);
                2&3
                00000000    00000000    00000000    00000010
&              00000000    00000000    00000000    00000011
                00000000    00000000    00000000    00000010
                结果为2
    3)|或运算
        (1)对应两个二进制位有一个为1时结果才为1,否则为0(有真为真);
                2|3
                00000000    00000000    00000000    00000010
|               00000000    00000000    00000000    00000011
                00000000    00000000    00000000    00000011
                结果为3
    4)^异或运算
        (1)对应的二进制位不同时为1,否则为0.(不同为真==1,相同为假==0)
        (2)相同整数^运算的结果是0.
        (3)一个数^另一个数两次结果不变
        (4)整数相互^跟顺序无关。
                2^3
                00000000    00000000    00000000    00000010
^              00000000    00000000    00000000    00000011
                00000000    00000000    00000000    00000001
                结果为1
    5)~取反运算
        (1)对整数的各个二进制位取反,包括富豪为(0变1,1变0,真假互换)。
           ~2
~              00000000    00000000    00000000    00000010   
                11111111    11111111    11111111    11111101    --    -3    补码
                10000000    00000000    00000000    00000011    --    -3    原码
                11111111    11111111    11111111    11111100    --    -3    反码
        (2)取反运算是单目操作符
        (3)计算机中:原码=补码=反码(不是表现形式相等,而是真是的值相等)
        (4)正数的补码,反码,原码的表现形式都是一样的。
        (5)负数的补码=反码+1;反码=原码符号位不变其余取反。
        (6)取反==原数的反值-1;例如:2:-1-1=-3;-3:3-1=2
    6)<<左移
        (1)把整数的各个二进制位全部左移N位,高位丢弃(包括符号位),低位补0;
            3<<1
            0000 0000    0000 0000    0000 0000    0000 0011
<<1     0000 0000    0000 0000    0000 0000    0000 0110   6
            3<<1    -->6    -->3*2的1次方
            3<<2    -->12    -->3*2的2次方
            3<<3    -->24    -->3*2的3次方
            注:此方法使用要求,符号位不变。
    7)>>右移
        (1)把整数的各个二进制位全部右移N位,符号位不变,高位的空缺是正数补0;
            3>>1
             0000 0000     0000 0000     0000 0000     0000 0011
>>1      0000 0000     0000 0000     0000 0000     0000 0001        1

            3>>2
             0000 0000     0000 0000     0000 0000     0000 0011
>>2      0000 0000     0000 0000     0000 0000     0000 0000        0
            3>>1        --->1      3/2的1次方=1
            3>>2        --->2      3/2的2次方=0
            注:


5 个回复

倒序浏览
总结的很好,借用一下,多谢
回复 使用道具 举报
| 运算里的2|3 你写成了 2&3
另外取反运算是怎么算的啊。
回复 使用道具 举报
℃葫芦 发表于 2015-8-7 23:02
| 运算里的2|3 你写成了 2&3
另外取反运算是怎么算的啊。

取反也就是符号位除外  其他1变0   0变1
这里也就是注意符号位不变

然后就是注意正数  原码=反码=补码
回复 使用道具 举报
回复 使用道具 举报
℃葫芦 发表于 2015-8-7 23:02
| 运算里的2|3 你写成了 2&3
另外取反运算是怎么算的啊。

收到,我改改
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马