继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

javaday02-3 位运算符

慕妹3146593
关注TA
已关注
手记 107
粉丝 14
获赞 39

位运算符: &(位与)   |(位或)    ~(位取反)    ^(位异或)      

         当这4个的左右边是常数的时候,是位运算符

                  <<    ,     >>    ,    >>>

分析:因为是位运算,所以我们必须先把数据换算成二进制。

&(位与)运算  :有0则0。

|(位或)运算  :有1则1。

^位(异或)运算  :相同则0,不同则1。

         ^的特点  :一个数据对另一个数据位异或两次,该数本身不变。

[代码]xml代码:

?

1

2

3

4

int a = 10;

int b = 20;

System.out.println(a ^ b ^ b); //10

System.out.println(a ^ b ^ a); //20

练习题:

         请自己实现两个整数变量的交换

[代码]xml代码:

?

01

02

03

04

05

06

07

08

09

10

int a = 10;

int b = 20;  //使a,b的值交换

//第一种方法,使用第三方变量(开发中用的)

int c = a;

     a = b;

     b = c;

//第二种方法,使用异或方法(面试用) 左边:a,b,a  右边:a ^ b

a = a^b;

b= a^b;   // b=a^b^b = a

a=a^b;    // a=a^b^a    (此时b在上面已经变成了a)  = a

[代码]xml代码:

?

1

2

3

4

第三种方法:用变量相加

a = a+b; // a = 30

b = a-b; //  b = 30-20 = 10

a = a-b; //  a = 30 - 10 = 20

[代码]xml代码:

?

1

2

第四种方法

b = (b+a) - (a=b);  //  b = (10   + 20) - 20 = 10 , 此时a = b = 20

 

~(按位取反)运算符  :0变1,1变0

<<    :  左移    左边最高位丢弃,右边补齐0

>>   :   右移   最高位是0,左边补齐0;最高为是1,左边补齐1

>>>  :  无符号右移 无论最高位是0还是1,左边都补齐0  

[代码]xml代码:

?

1

2

3

   <<   把  <<  左边的数据乘以2 的  移动次幂

System.out.println(3 << 2);      //  3*2^2 = 3*4 = 12

    >> 把  >>  左边的数据除以2 的  移动次幂

?

1

System.out.println(24 >> 2);   //   24 / 2^2 = 24 / 4 = 6

无论正负:

[代码]xml代码:

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

-24  >>  2 的移动:  

计算出24的二进制:11000

    原码:10000000 00000000 00000000 00011000 

    反码:11111111 11111111 11111111 11100111

    补码:11111111 11111111 11111111 11101000

     

    11111111 11111111   11111111 11101000

    1111111111   11111111 11111111 111010(00) 补码

移动后的计算:

    补码:1111111111 11111111 11111111 111010

    反码:1111111111 11111111 11111111 111001

    原码:1000000000 00000000 00000000 000110

     

    结果:-6

面试题:

                  请用最有效率的方式写出计算2乘以8的结果

[代码]xml代码:

?

1

System.out.println(2 << 3); // 2 *   2^3 = 2 * 8

原文链接:http://www.apkbus.com/blog-833059-61614.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP