数值类型的运算方式总结

一.常见的位运算使用场景:

1.java中的常见位运算符一共有7个:

符号含义
&按位与,and。两个数字相同位上,同1为1,一0为0
|按位或,or。两个数字相同位上,一1为1,同0为0
^

按位异或,xor。两个数字相同位上,相同为0,不同为1

~按位取反,not。1变为0,0变为1
<<左移,shl。a<<b表示把a的二进制数左移b位,最右边空出的b位用0补充。运算结果相当于a乘以2的b次方
>>右移,shr。a >> b表示把a的二进制数右移b位,即去掉末尾的b位,最左边的b位补上原来的符号位(正数为0,负数为1)。若a为正数,运算结果相当于a除以2的b次方
>>>无符号右移。a >>> b表示把a的二进制数右移b位,即去掉末尾的b位,最左边的b位补上0(无论正负都补0)

2.位运算使用场景:

  • 2.1取模运算
    • 若a、b均为正数,且b是2的n次方(n为自然数),则取模操作 a % b,等价于 a & (b - 1)
  • 2.2奇偶性判断
    • 偶数&1=0
    • 奇数&1=1
  • 2.3交换变量的值
    • 一个数与另一个数异或两次等于该数本身
      • //例1:
        int a=3,b=4
        a=a^b;
        b=a^b;
        a=a^b;
        //例2:给出一组数,找出不重复数字(只出现一次的数字)
        int[] arr={6,2,7,15,2,6,7};
        int n=arr[0];
        for(int i=1;i<arr.length;i++){
                n=n^arr[i];
        }
        System.out.println("只出现一次的数:"+n);//n=15
        

二.整数类型运算时的类型溢出问题,产生原因以及解决办法:

  • 1.产生原因:整数类型的存储范围有限,故而会出现溢出情况
  • 2.解决办法
    • 2.1使用Java封装的大整数类BigInteger解决
    • 2.2使用数组存储解决(防止溢出,但可能越界)
    • 2.3使用可变数组解决数组越界(ArrayList)

三.浮点类型运算时的精度丢失问题,产生原因以及解决办法:

  • 1.产生原因:浮点十进制值通常没有完全相同的二进制表示形式,会进行截取部分小数进行存储,从而导致计算机存储的数值只能是个大概的值,而不是精确的值
  • 2.解决办法:使用Java封装的BigDecimal类解决(建议使用BigDecimal(String val)这个调用方法)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值