3.各个运算符和三目运算表达式

1.加减乘除

整数型在做运算时,如果两个数都没有被fianl修饰,将自动转换成int类型做运算,结果也要用int来接收

向上提升:double d= 4>4 ? 99.9 : 9 如果取值的两个数都是基本类型,结果将自动转换成大的那个类型,d=9.0

优先级

先计算乘除后加减

如果运算优先级相同,从左向右

如果需要手动改变优先级使用(), ()可以嵌套使用

除法运算时,如果除数是0,会发生异常

% 取余

例如,10%3得到的结果是1,

三目运算符

String sex= 1>1? “n”:“y”; 最终sex的结果是y

逻辑运算

== 基本类型,比较的是值,引用类型比较的是地址

& 并且 &&效率更快

| 或者 ||效率更快

!= 取反

位运算

计算机系统中,数字一律用补码来表示、运算、存储

位运算起源于C语言的低级操作,因为位运算的操作对象是二进制位,但是这种低级操作对计算机而言是非常简单直接,通常位运算比除法快得多,比乘法快几倍,有时比加法快得多。虽然由于较长的指令流水线和其他架构设计选择,现代处理器通常执行加法和乘法的速度与位运算一样快,但由于资源使用减少,位运算通常会使用较少的功率,所以在一些Java底层算法中,巧妙的使用位运算可以大量减少运行开销,逻辑运算也属于位运算,只不过其是进行判断,比如 &与,两者都为1,结果才为1

原码反码补码

原码:原码表示法在数字前面增加了一位符号位,即最高位为符号位,正数位该位为0,负数位该位为1,比如byte类型的5如果用二进制位来表示就是00000101,-5就是10000101

反码:正数的反码是其本身,负数的反码在其原码的基础上,符号位不变,其余各个位取反。5的反码就是00000101,而-5的则为11111010

补码:正数的补码是其本身,负数的补码在反码的基础上+1。5的反码就是00000101,而-5的则为11111011。

<<左移运算

规则:二进制补码后,全部向左移动1位,高位丢掉,低位自动补0

计算2<<1

2的所有二进制位向左移动1位,高位丢掉,低位自动补0,00000010 变成了00000010**0,**结果为4

一个数字向左移动1位相当于这个数本身乘以一次2,向左移动2位就相当乘以两次2,左移运算数值会越来越大

>>右移运算

转为二进制补码后,各二进制位全部右移N位,如果要进行运算的这个数是正数,则在高位插入 0,是负数,则在高位插入1

计算10>>2

10的二进制补码向右移动两位,00001010,10是正数,低位丢弃2个,高位自动补0,变成了00000010,结果为2

计算-7>>2

7的二进制是00000111,-7是100000111,反码111111000,补码111111001

111111001向右移动2位,-7是负数,高位不够补1,变成了 111111110,转成反码111111101,转成原码100000010,结果为-2

由于右移运算的特性,正数高位补0,负数补1,一个正数右移动的位数大于它本身的二进制补码位时,结果总是0,一个负数右移动的位数大于它本身的位时结果总是-1,所有有了无符号右移运算(>>>)

>>>无符号右移运算

规则:转为二进制后,各二进制位全部右移N位,无论正负,都在高位插入0

计算10>>>2

10的二进制补码向右移动两位,00001010,10是正数,低位丢弃2个,高位自动补0,变成了00000010,结果为2

计算-6>>>1

原码00000000000000000000000000000110,反码11111111111111111111111111111001

补码11111111111111111111111111111010,右移1位,并在高位补0

0111111111111111111111111111101,转成反码01111111111111111111111111111100,

转成原码10000000000000000000000000000011,结果是2147483651,int最大值是2147483647,溢出

2.逻辑符的位运算

逻辑符如果直接和某个数进行运算,将会按照这个数的二进制做计算,然后生成新的数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GmRiWoKp-1688546637859)(media/image1.png)]{width="5.760416666666667in" height="2.361839457567804in"}

以逻辑符 | 举例

@Test

public void random(){

System.out.println(87|55);//结果为119

}

按照|的描述,将两个数转换2进制后做比较
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FQGOVXfu-1688546637860)(media/image2.png)]{width="5.760416666666667in" height="4.667924321959755in"}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值