数值类型的运算方式总结

提纲1:常见的位运算使用场景
提纲2:整数类型运算时的类型溢出问题,产生原因以及解决办法
提纲3:浮点类型运算时的精度丢失问题,产生原因以及解决办法

数值类型(6种)分为:

整型(整数):byte 字节型,占1个字节  short 短整型,占2个字节  int 整型, 占4个字节(默认)

long 长整型,占8个字节

浮点型(小数):float 单精度浮点数,占4个字节  double 双精度浮点数,占8个字节(默认)

运算方式:

1.算术运算符:+  -  *  /  %

注意1:数值类型使用算术运算符,运算结果任然为数值

注意2:整数之间使用“\”,进行整除运算

注意3:整数不能为“零”

注意4:防止“类型溢出”

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

产生原因:

固定范围:Java的整数类型有固定的范围。例如,int类型的范围是-2^31到2^31-1(包括负数,因为Java使用二进制补码表示法)。如果运算结果超出这个范围,就会发生溢出。
算术运算:任何可能产生超出范围结果的算术运算(加法、减法、乘法)都可能导致溢出。
类型转换:将一个范围较大的整数类型强制转换为范围较小的整数类型时,如果值超出目标类型的范围,也会发生溢出。

解决办法:

整数类型运算时遇到的类型溢出问题,可以使用BigInteger来解决

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

产生原因:

是因为计算机内部是通过二进制形式来保存浮点数的,无法精确的表示十进制的小数,所以会产生精度丢失的问题。具体情况如下:
十进制的小数在进行二进制转换时,整数部分会除二取余,小数部分会乘二取整,在乘二取整的过程中,会产生无限循环的情况,所以就出现了精度丢失。

解决办法:

浮点类型运算时遇到的精度丢失问题,可以使用BigDecimal来解决

注意5:浮点数运算时,除数为零

System.out.println(-5.0/0); //结果为Infinity或-InfinitySystem.out.println(0.0/0); //结果为NaN

2.位运算:

1)<<  (左移)>> (右移)位移运算:左移变大,右移变小

int number=100;
System.out.println(number<<3);//向左移3位相当于n*2^3
System.out.println(number>>3);//向右移3位相当于n/2^3//在原有基础上,计算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 结果为1 否则为0

常见的位运算使用场景:

1.判断奇偶数:位运算可以用于判断一个整数是奇数还是偶数。一个整数与1进行位与运算,如果结果为0,则该整数为偶数;如果结果为1,则该整数为奇数

2.快速的计算:位运算可以用于实现一些简单的乘法和除法运算。例如,乘以2可以通过左移一位来实现,除以2可以通过右移一位来实现。

3.哈希值的计算:在哈希算法中,位运算也经常被使用。例如,Java的HashMap在实现其hash方法时,就使用了右移运算符(>>>)。

4.交换变量值:位运算可以用于交换两个变量的值。你可以使用异或(^)运算和位与(&)运算来实现这一点。

lass demo02 {public static void main(String[] args) {int a = 5;int b = 10;System.out.println("交换前:");System.out.println("a = " + a);System.out.println("b = " + b);// 使用异或运算交换a和b的值a = a ^ b;b = a ^ b;a = a ^ b;System.out.println("交换后:");System.out.println("a = " + a);System.out.println("b = " + b);}}运行结果:
交换前:
a = 5
b = 10
交换后:
a = 10
b = 5

3.关系运算符:>  <  >=  <=  ==  !=

运算规则:数值类型之间运算,运算结果为boolean

4.逻辑运算符:&&(与)  || (或) !(非)

运算规则:布尔类型之间运算,结果为boolean

&&运算:同时为true 结果为true 否则为false

||运算:同时为false 结果为false 否则为true

!运算:false为true  true为false

5.三元运算符:条件表达式?表达式1:表达式2

        int a=7 ,b=13 ,c=91;//3个变量排序//最大值int max=(a>b) ? (a>c ? a : c) :(b>c ? b : c);//最小值int min=(a<b) ? (a<c ? a : c) :(b<c ? b : c);//中间值int mid=(a+b+c)-max-min;System.out.println(max);System.out.println(mid);System.out.println(min);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/472111.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高校疫情防控系统的全栈开发实战

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

英文单词-计算: calculate、count、compute、reckon

英文单词-计算: calculate、count、compute、reckon count 数数; 计算总数; 重要; 包括在内; 正式认可; 认为; 被视作; compute 计算&#xff0c;估算; calculate 计算; 估算; 估计; 预料; reckon 测算&#xff0c;估计; 认为; 计算; 评定&#xff0c;断定; 这四个单词 “c…

Mock.js

在开发后端的应用中&#xff0c;我们使用postman来测试接口&#xff0c;观察和验证前后端之间的数据传递是否正常。 在开发前端的应用中&#xff0c;我们使用Mock.js来模拟后端服务&#xff0c;以便进行前端业务逻辑的开发和测试。 一般情况下&#xff0c;个人开发或者小团队开…

laravel_进程门面_简单介绍

文章目录 Facade是什么&#xff1f;Facade能干什么Facade有哪些方法&#xff1f;怎么使用Facade呢&#xff1f;详细的代码解释Symfony Process是什么&#xff1f;介绍Symfony总结 Facade是什么&#xff1f; 在 Laravel 框架中&#xff0c;Facade 是一种设计模式。 它提供了一…

杨中科 .netcore 依赖注入

1.概念 概念 生活中的“控制反转”:自己发电和用电网的电。 依赖注入(Dependency Injection&#xff0c;Dl)是控制反转:(Inversion of Control&#xff0c;l0c)思想的实现方式。 依赖注入简化模块的组装过程&#xff0c;降低模块之间的耦合度 自己发电的代码 var connSetti…

炬芯ATS2819 soundbar音响系统开发完全手册

加我微信hezkz17,可申请加入数字音频系统研究开发交流答疑群,赠送音频项目核心开发资料 ATS2819音响系统开发完全手册 1 硬件原理实现 图1 硬件原理框图 2 SOC ATS2819介绍 3 E800 板子项目实物…

基于BP算法的SAR成像matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 BP算法的基本原理 4.2 BP算法的优点与局限性 5.完整工程文件 1.课题概述 基于BP算法的SAR成像。合成孔径雷达&#xff08;SAR&#xff09;是一种高分辨率的雷达系统&#xff0c;能够在各种天气和光…

Tcl 过程

一个Tcl过程就是Tcl脚本定义的一个命令。可以使用proc命令定义新的过程。Tcl还提供了处理变量作用域的特殊命令&#xff0c;这些命令允许使用引用而非值传递参数&#xff0c;并能把新的Tcl控制结构实现为过程。 一、proc与return 过程由proc命令创建, 其中参数{a b} 中的大括…

leetcode hot100爬楼梯

在本题目中&#xff0c;要求爬第n阶有多少种爬法&#xff0c;并且每次只能爬1个或者2个&#xff0c;这明显是动态规划的问题&#xff0c;我们需要用动态规划的解决方式去处理问题。动态规划就是按照正常的顺序由前向后依次推导。而递归则是从结果往前去寻找&#xff08;个人理解…

用HTML、CSS和JS打造绚丽的雪花飘落效果

目录 一、程序代码 二、代码原理 三、运行效果 一、程序代码 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetGBK"><style>* {margin: 0;padding: 0;}#box {width: 100vw;heig…

HC05蓝牙模块

简介 HC-05 蓝牙串口通信模块&#xff0c;是基于 Bluetooth Specification V2.0 带 EDR 蓝牙协议的 数传模块。无线工作频段为 2.4GHz ISM&#xff0c;调制方式是 GFSK。模块最大发射功率为 4dBm&#xff0c;接收灵敏度-85dBm&#xff0c;板载 PCB 天线&#xff0c;可以实现 1…

Kotlin基础——类、对象和接口

文章目录 1 定义类继承结构1.1 接口1.1.1 接口概述1.1.2 接口中的默认方法1.1.3 接口方法重复1.1.4 Kotlin接口中静态方法实现原理 1.2 修饰符1.2.1 类继承修饰1.2.2 方法重写修饰1.2.3 抽象类1.2.4 接口的修饰符 1.3 可见性修饰符1.3.1 Kotlin中的可见性修饰符1.3.2 Kotlin中的…