JAVA基础06——运算符02

1.位运算

处理数据类型的时候,可以直接对组成整形数值的各个位完成操作

&("and")   |("or")      ~("not") ^("xor”)

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

以下用例皆为byte类型:

①:按位与操作

两个操作数,如果同为1则为1,否则为0

 

例题:

-10    原码:10001010
       反码:11110101
       补码:11110110
8      00001000

       11110110
       00001000
&      00000000

 

 

 

②:按位或操作

只有两个操作数对应位同为0时,结果为0,其余全为1.

 

例题:

-10    原码:10001010
       反码:11110101
       补码:11110110
8      00001000

       11110110
       00001000
|      11111110

③:~:按位取反

 

所有位均取反,0改为1,1改为0

④:按位异或操作

两个操作数对应位,相同则结果为0,不同则结果为1

 

例题:

-10
    原码:10001010
    反码:11110101
    补码:11110110
8
    原码:00001000

    11110110
    00001000
^   11111110

2.移位运算

以下用例皆为byte类型:

①:左移(<<)

右边空出来的位用0填补高位左移溢出则舍弃该高位

左移几位其实就是这个数 *2 的几次幂li

 

例题:-8<<2

-8
    原码:10001000
    反码:11110111
    补码:11111000
-8<<2
    补码:11100000
    反码:11011111
    原码:10100000=-32
    -8*(2^2)=8*4=32

②:右移(>>)

左边空出来的位用0或1填补,正数用0负数用1填补。

右移几位其实就是这个数/2的几次幂 -----》除法

例题:

-8
    原码:10001000
    补码:11111000
-8>>2
    整数补0,负数补1,所以此处补1
    补码:11111110
    原码:10000010=-2
    -8/(2^2)=-2

 

③:无符号右移(>>>)

数据进行右移时,高位出现的空位,无论原高位是什么,空位都用0补

总结:左移右移其实操作的都是2的倍数

重点面试题:

用最快速度计算出2*16的值

public static void main(String[] args) {
		//用最快的速度计算出2*8
		long startTime=System.nanoTime();   //获取开始时间  
		System.out.println(2*16);
		long endTime=System.nanoTime(); //获取结束时间  
		System.out.println("程序运行时间: "+(endTime-startTime)+"ns");   
		
		long startTime1=System.nanoTime();   //获取开始时间  
		System.out.println(2<<4);
		long endTime1=System.nanoTime(); //获取结束时间  
		System.out.println("程序运行时间: "+(endTime1-startTime1)+"ns");   
	}

运行结果:

32
程序运行时间: 118700ns
32
程序运行时间: 13200ns

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值