java位运算符高级用法_java基础——位运算符的基本用法

1_Java语言基础(位运算符的基本用法1)(了解)

A:位运算符有哪些

&, |, ^, ~ , >>, >>>, <<

B:案例演示

位运算符的基本用法1

&,|,^,~ 的用法

&:有0则0

|:有1则1

^:相同则0,不同则1

~:按位取反

2_Java语言基础(位异或运算符的特点及面试题)(掌握)

A:案例演示

位异或运算符的特点

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

B:面试题:

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

注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型。

3_Java语言基础(位运算符的基本用法2及面试题)(了解)

A:案例演示 >>,>>>,<

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

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

最有效率的算出2 * 8的结果

class Demo1_Operator {

public static void main(String[] args) {

/*

* &,|,^,~ 的用法

* &:有0则0

* |:有1则1

* ^:相同则0,不同则1

* ~:按位取反

*/

System.out.println(6 & 3);//2

System.out.println(6 | 3);//7

System.out.println(6 ^ 3);//5

System.out.println(~6);//-7?

}

}

/*

110

&011

-----------

010

110

|011

-----------

111

110

^011

-----------

101

00000000 00000000 00000000 000001106的原码反码补码都是本身

11111111 11111111 11111111 11111001对6取反

-00000000 00000000 00000000 00000001

---------------------------------------

11111111 11111111 11111111 11111000反码

10000000 00000000 00000000 00000111原码(-7)

*/

class Demo2_Operator {

public static void main(String[] args) {

/*

* 位异或运算符的特点

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

*/

//System.out.println(5 ^ 10 ^ 10);

//System.out.println(5 ^ 10 ^ 5);

/*

* 请自己实现两个整数变量的交换(不需要定义第三方变量)

* 注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型。

*/

int x = 10;

int y = 5;

//需要第三方变量,开发推荐用这种

/*int temp;

temp = x;

x = y;

y = temp;*/

//不需要定义第三方变量,有弊端,有可能会超出int的取值范围

/*x = x + y;//10 + 5 = 15

y = x - y;//15 - 5 = 10

x = x - y;//15 - 10 = 5*/

//不需要第三方变量,通过^来做

x = x ^ y;// 10 ^ 5

y = x ^ y;// 10 ^ 5 ^ 5y = 10

x = x ^ y;// 10 ^ 5 ^ 10 x = 5

System.out.println("x = " + x + ",y = " + y);

}

}

class Demo3_Operator {

public static void main(String[] args) {

/*

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

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

* 最有效率的算出2 * 8的结果

*/

//左移,向左移动几位就是乘以2的几次幂

//System.out.println(12 << 1);//24

//System.out.println(12 << 2);//48

/*

00000000 00000000 00000000 0000110012的补码

(0)0000000 00000000 00000000 00001100024的补码

(00)000000 00000000 00000000 000011000048的补码

*/

//右移,向右移动几位就是除以2的几次幂

//System.out.println(12 >> 1);

//System.out.println(12 >> 2);

/*

00000000 00000000 00000000 0000110012的补码

000000000 00000000 00000000 0000110(0)6

0000000000 00000000 00000000 000011(00) 3

*/

//最有效率的算出2 * 8的结果

System.out.println(2 << 3);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值