数值类型的运算方式总结

本文介绍了Java编程中的位运算(如异或、左移、右移等)、判断奇偶数的方法,以及算术运算中的类型溢出问题及其解决策略,同时讨论了浮点类型精度丢失的原因和使用BigDecimal进行处理的方法。
摘要由CSDN通过智能技术生成

提纲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来解决

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值