当前位置: 首页 > news >正文

数值类型的运算方式总结

提纲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

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);

 

 

 

 

相关文章:

数值类型的运算方式总结

提纲1&#xff1a;常见的位运算使用场景 提纲2&#xff1a;整数类型运算时的类型溢出问题&#xff0c;产生原因以及解决办法 提纲3&#xff1a;浮点类型运算时的精度丢失问题&#xff0c;产生原因以及解决办法 数值类型&#xff08;6种&#xff09;分为&#xff1a; 整型&…...

【Redis快速入门】Redis三种集群搭建配置(主从集群、哨兵集群、分片集群)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…...

[嵌入式系统-14]:常见实时嵌入式操作系统比较:RT-Thread、uC/OS-II和FreeRTOS、Linux

目录 一、实时嵌入式操作系统 1.1 概述 1.2 什么“实时” 1.3 什么是硬实时和软实时 1.4 什么是嵌入式 1.5 什么操作系统 二、常见重量级操作系统 三、常见轻量级嵌入式操作系统 3.1 概述 3.2 FreeRTOS 3.3 uC/OS-II 3.4 RT-Thread 3.5 RT-Thread、uC/OS-II、Free…...

基于AI Agent探讨:安全领域下的AI应用范式

先说观点&#xff1a;关于AI应用&#xff0c;通常都会聊准召。但在安全等模糊标准的场景下&#xff0c;事实上不存在准召的定义。因此&#xff0c;AI的目标应该是尽可能的“像人”。而想要评价有多“像人”&#xff0c;就先需要将人的工作数字化。而AI Agent是能够将数字化、自…...

Stable Diffusion 模型下载:ToonYou(平涂卡通)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十...

机器学习:分类决策树(Python)

一、各种熵的计算 entropy_utils.py import numpy as np # 数值计算 import math # 标量数据的计算class EntropyUtils:"""决策树中各种熵的计算&#xff0c;包括信息熵、信息增益、信息增益率、基尼指数。统一要求&#xff1a;按照信息增益最大、信息增益率…...

红队打靶练习:HACK ME PLEASE: 1

信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:69:c7:bf, IPv4: 192.168.61.128 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.61.2 00:50:56:f0:df:20 …...

《VulnHub》GoldenEye:1

title: 《VulnHub》GoldenEye&#xff1a;1 date: 2024-02-16 14:53:49 updated: 2024-02-16 15:08:49 categories: WriteUp&#xff1a;Cyber-Range excerpt: 主机发现、目标信息扫描、源码 js 文件泄露敏感信息、hydra 爆破邮件服务&#xff08;pop3&#xff09;、邮件泄露敏…...

html的表格标签

html的表格标签 table标签:表示整个表格tr:表示表格的一行td:表示一个单元格th:表示表头单元格.会居中加粗thead:表格的头部区域 (注意和th区分,范围是比th要大的).tbody:表格得到主体区域. table包含tr , tr包含td或者th. 表格标签有一些属性&#xff0c;可以用于设置大小边…...

蓝桥杯(Web大学组)2022省赛真题:展开你的扇子

思路&#xff1a; transform-origin: center bottom;使盒子旋转时&#xff0c;以底部的中心为坐标原点&#xff08;题目已给出&#xff09; 对每个盒子使用transform: rotate();实现旋转 笔记&#xff1a; 设置悬浮旋转时&#xff0c; #box div:hover #item6{ } 为什…...

复习基础知识1

局部变量 写程序时&#xff0c;程序员经常会用到局部变量 汇编中寄存器、栈&#xff0c;可写区段、堆&#xff0c;函数的局部变量该存在哪里呢&#xff1f; 注意&#xff1a;局部变量有易失性 一旦函数返回&#xff0c;则所有局部变量会失效。 考虑到这种特性&#xff0c;人们…...

java8-用流收集数据-6

本章内容口用co1lectors类创建和使用收集器 口将数据流归约为一个值 口汇总:归约的特殊情况 数据分组和分区口 口 开发自己的自定义收集器 我们在前一章中学到&#xff0c;流可以用类似于数据库的操作帮助你处理集合。你可以把Java8的流看作花哨又懒惰的数据集迭代器。它们…...

[前端开发] JavaScript基础知识 [上]

下篇&#xff1a;JavaScript基础知识 [下] JavaScript基础知识 [上] 引言语句、标识符和变量JavaScript引入注释与输出数据类型运算符条件语句与循环语句 引言 JavaScript是一种广泛应用于网页开发的脚本语言&#xff0c;具有重要的前端开发和部分后端开发的应用。通过JavaSc…...

初识Qt | 从安装到编写Hello World程序

文章目录 1.前端开发简单分类2.Qt的简单介绍3.Qt的安装和环境配置4.创建简单的Qt项目 1.前端开发简单分类 前端开发&#xff0c;这里是一个广义的概念&#xff0c;不单指网页开发&#xff0c;它的常见分类 网页开发&#xff1a;前端开发的主要领域&#xff0c;使用HTML、CSS …...

机器学习:过拟合和欠拟合的介绍与解决方法

过拟合和欠拟合的表现和解决方法。 其实除了欠拟合和过拟合&#xff0c;还有一种是适度拟合&#xff0c;适度拟合就是我们模型训练想要达到的状态&#xff0c;不过适度拟合这个词平时真的好少见。 过拟合 过拟合的表现 模型在训练集上的表现非常好&#xff0c;但是在测试集…...

变分自编码器(VAE)PyTorch Lightning 实现

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…...

设备驱动开发_1

可加载模块如何工作的 主要内容 描述可加载模块优势使用模块命令效率使用和定义模块密钥和模块工作1 描述可加载模块优势 开发周期优势: 静态模块在/boot下的vmlinuz中,需要配置、编译、重启。 开发周期长。 LKM 不需要重启。 开发周期优于静态模块。 2 使用模块命令效率…...

C语言位域(Bit Fields)知识点精要解析

在C语言中&#xff0c;位域&#xff08;Bit Field&#xff09;是一种独特的数据结构特性&#xff0c;它允许程序员在结构体&#xff08;struct&#xff09;中定义成员变量&#xff0c;并精确指定其占用的位数。通过使用位域&#xff0c;我们可以更高效地利用存储空间&#xff0…...

离散数学——图论(笔记及思维导图)

离散数学——图论&#xff08;笔记及思维导图&#xff09; 目录 大纲 内容 参考 大纲 内容 参考 笔记来自【电子科大】离散数学 王丽杰...

opencv图像像素的读写操作

void QuickDemo::pixel_visit_demo(Mat & image) {int w image.cols;//宽度int h image.rows;//高度int dims image.channels();//通道数 图像为灰度dims等于一 图像为彩色时dims等于三 for (int row 0; row < h; row) {for (int col 0; col < w; col) {if…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...