提纲1:常见的位运算使用场景
^ | 按位异或,相同为0,不同为1 |
<< | 左移变大,运算结果相当于a乘以2的n次方 |
>> | 右移变小,运算结果相当于a除以2的n次方 |
& | 同时为1,结果为1,否则为0 |
| | 同时为0,结果为0,否则为1 |
算术运算符:+、-、*、\、%
位运算:<<、>>位移运算
位运算:&运算
运算规则:同时1,结果1,否则为0
判断奇偶数
int number=3495;
方式1:算术运算符%
商2余0为偶数,余1为奇数
System.out.println(number % 2);
方式2:位运算
偶数:二进制是最低为是0
奇数:二进制的最低位1
System.out.println(number & 1);
关系运算符:><>=<= == !=
运算规则:数值类型之间运算,运算结果为boolean
逻辑运算符:&&||!
运算规则:布尔类型之间运算,运算结果boolean
&&运算:同时为true,结果为true,否则false
||运算:同时为false,结果为false,否则为true
1.<<与>>左移变大,右移变小
public static void main(String[] args) {
//位运算:<<、>>位移运算
int number=10;
System.out.println(number<<3);//向左移两位相当于n*2^3
System.out.println(number>>3);//向右移两位相当于n/2^3
//在原有cap变量值基础上,计算1.5倍的增长
int cap=16;
int newCap1=(int)(cap*1.5);//算术运算符
int newCap2=cap+(cap>>1);//位运算
System.out.println(newCap1);
System.out.println(newCap2);
}
}
2.判断奇偶性
方式1:算术运算符
方式2:位运算&
public static void main(String[] args) {
//位运算:&运算
//运算规则:同时1,结果1,否则为0
//0110(6)
//0101(5)
//0100(4)
int n1=6,n2=5;
int ret=n1 & n2;
System.out.println(ret);//4
//判断奇偶数
int number=3495;
//方式1:算术运算符%
//商2余0为偶数,余1为奇数
System.out.println(number % 2);
//方式2:位运算
//偶数:二进制是最低为是0
//奇数:二进制的最低位1
System.out.println(number & 1);
}
3.关系运算符,逻辑运算符
public static void main(String[] args) {
//关系运算符:><>=<= == !=
//运算规则:数值类型之间运算,运算结果为boolean
//逻辑运算符:&&||!
//运算规则:布尔类型之间运算,运算结果boolean
//&&运算:同时为true,结果为true,否则false
System.out.println(true && true);//true
System.out.println(false && true);//false
System.out.println(true && false);//false
System.out.println(false && false);//false
System.out.println();
//||运算:同时为false,结果为false,否则为true
System.out.println(true || true);//true
System.out.println(false || true);//true
System.out.println(true || false);//true
System.out.println(false || false);//false
System.out.println();
System.out.println(5>6);//false
System.out.println(5<6);//true
System.out.println(5==6);//false
System.out.println(5!=6);//true
System.out.println();
//手机号码
String phoneNumber="15769283314";
System.out.println(phoneNumber.length()==11);
//密码位数
String password="123456";
System.out.println(password.length()==6);
}
提纲2:数值类型运算时的类型溢出问题,产生原因以及解决方法
1>类型溢出产生的原因:
整数类型的存储范围有限,所以就会出现类型溢出的问题
类型转换:将一个大范围的整数类型转换为一个极小范围的整数类型时,如果原始值超出了目标类型的表示范围,就会发生溢出。
在加减乘除算数运算中,如果解惑超出了整数类型的范围,就会发生溢出。
2>解决方法:
使用BigInteger解决
提纲3:浮点类型运算时的精度丢失问题,产生原因以及解决方法
1>精度丢失产生的原因:
是因为计算机内部是通过二进制形式来保存浮点数的,无法精确的表示十进制的小数,所以会产生精度丢失的问题。具体情况如下:
十进制的小数在进行二进制转换时,整数部分会除二取余,小数部分会乘二取整,在乘二取整的过程中,会产生无限循环的情况,所以就出现了精度丢失。
2>解决方法:
浮点数类型运算时遇到的精度丢失问题,可以使用BigDecimal来解决