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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 请叫我焦卷卷 中级黑马   /  2015-9-27 17:18  /  1331 人查看  /  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 个回复

正序浏览
赞一个,再赞一个,在在在一个
回复 使用道具 举报
学习学习!
回复 使用道具 举报
Windnon 发表于 2015-9-28 21:19
整理的不错,仔细看看,

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

haha~一起学习~
回复 使用道具 举报

一起学习!
回复 使用道具 举报
涨姿势了。
回复 使用道具 举报
学习学习!
回复 使用道具 举报
学习学习!
回复 使用道具 举报
总结的很全呢,这一块学的一般
回复 使用道具 举报
倪达 中级黑马 2015-9-28 21:57:19
8#
不用看,加油吧
回复 使用道具 举报
赞一个,再赞一个,在在在一个
回复 使用道具 举报
不错整理的很详细,值得学习。
回复 使用道具 举报
不错不错 加油加油
回复 使用道具 举报
整理的不错,仔细看看,
回复 使用道具 举报
整理的很好,值得学习
回复 使用道具 举报
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马