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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 请叫我焦卷卷 中级黑马   /  2015-9-27 17:18  /  1329 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

位运算(对整数在内存中的二进制位进行操作,所有位运算只能操作整型)
作用:直接通过操作二进制位来运算,高效
1、&按位与 同1为1
2、|按位或 同0为0
3、^按位异或   相同为0 不同为1
     0)一个整数^0结果是本身
     1)相同整数相^是0
     2)一个数^另一数两次结果不变2^3^3==2
     3)整数相^与顺序无关   3^2^3==2
4、~取反(单目运算)  对整数的各二进位取反,包括符号位 0-1 1-0
   1、计算机里,补码原码反码,表现形式不同,最终表示的结果是一样的,是指真实的值相等,三码为了计算机运算方便
   2、正整数:补码==反码==原码       表现形式相同
   3、负整数:原码:有符号数的二进制数
            反码 = 原码符号位不变其余取反
            补码=反码+1
   4、取反的快捷运算 == (-)原数-1   ~2==(-2)-1
5、<<左移:
          1)方法:把整数的各二进位全部左移n位,高位舍弃(包括符号位),低位补0 。

          2)规律:原数 << n  == 原数*2 ^ n
                  但移动后符号位变化除外,符号位改变则正负改变,此时规律不可用

          3)注意:左移时符号位也跟着移动

6、>>右移:
        1)方法:符号位不变,除符号位,整体右移n位,低位舍弃。高位的空缺是正数补0,是负数补0/1由编译器决定。

        2)规律:原数 >> n  == 原数÷2 ^ n  
                不会改变原数的正负,此规律适用于所有右移

        3)注意:右移时符号位不跟着移动

    3>>1
    00000000 00000000 00000000 00000011
    0 0000000 00000000 00000000 0000001 1(移出)
-----------------------------------------------
    符号位是0,高位由于右移产生的空位补0
    00000000 00000000 00000000 00000001---1

    3>>2
    00000000 00000000 00000000 00000011
    0  0000000 00000000 00000000 000000 11(移出)
----------------------------------------------
    00000000 00000000 00000000 00000000---0

7、注意:浮点数不能位移运算

8、为什么计算机内需要位移运算
   1)一般思路计算乘法
    7*8 == 7*2^3 == 7<<3     0111
                             00111000 == 56
    0111
    1000
   ------
    0000
   0000
  0000
0111
-------
00111000 == 56




16 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
整理的很好,值得学习
回复 使用道具 举报
整理的不错,仔细看看,
回复 使用道具 举报
不错不错 加油加油
回复 使用道具 举报
不错整理的很详细,值得学习。
回复 使用道具 举报
赞一个,再赞一个,在在在一个
回复 使用道具 举报
倪达 中级黑马 2015-9-28 21:57:19
8#
不用看,加油吧
回复 使用道具 举报
总结的很全呢,这一块学的一般
回复 使用道具 举报
学习学习!
回复 使用道具 举报
学习学习!
回复 使用道具 举报
涨姿势了。
回复 使用道具 举报

一起学习!
回复 使用道具 举报
超の 发表于 2015-9-28 17:17
整理的很好,值得学习

haha~一起学习~
回复 使用道具 举报
Windnon 发表于 2015-9-28 21:19
整理的不错,仔细看看,

好的~`````~~~
回复 使用道具 举报
学习学习!
回复 使用道具 举报
赞一个,再赞一个,在在在一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马