背景:
大家都知道,低精度的数字转换为高精度的数字是没有问题的,但是高精度的数字转换低精度的数字会精度受损。那精度是怎样受损的?转换的逻辑是怎样的了?以下为个人的猜想。
先上代码,1个short类型的数字,转换为byte类型的数字
@Test public void LongToInt(){ short c = 428; byte e = (byte)c; System.out.println("c to e :" +e); }
分析:
在计算机内存中,所有的数据都是以二进制方式进行计算的。数字运算也不能列外。就以二进制为思路。
short在java中 占用两个字节,二进制为16位的0和1。
比如:short c = 428 对应的二进制为 0000000110101100。
byte 在java中占用1个字节。
两个字节的short类型转换为1个字节的byte类型,是怎样转换的了?
个人猜想,把short的第一个字节去掉,还剩1个字节,把剩余的字节赋值给byte,那么0000000110101100去掉第一个字节的8位,剩下的字节为10101100,java中又是有符号数,一看最高为1,得用补码计算。最高位不变,其他位0变成1,1变成0,然后再加1,最后的二进制位11010100,最高位表示符号位,不进行计算,剩余的1010100转换为10进制为84,再加上符号位,最后的结果就是 -84了。
总结:
高精度的数字转换为低精度的数,把超过低精度字节的长度,从高精度高位字节去掉,转换为符合低精度的字节长度。
比如8字节的long,转换为4字节的int,把long的前4个字节去掉,剩余4个字节赋值给int,需要注意是否进行补码转换。
相关推荐
Java高精度计算Java高精度计算Java高精度计算Java高精度计算Java高精度计算Java高精度计算Java高精度计算Java高精度计算Java高精度计算Java高精度计算Java高精度计算Java高精度计算
1. 使用BigDecimal类:BigDecimal类是java中提供的一种高精度计算类,通过设置保留的小数位数来控制计算结果的精度。 2. 设置保留的小数位数:通过setScale()方法设置保留的小数位数,以控制计算结果的精度。 3. ...
Java高精度计算文件,很好用!!!非原创,特此向代码原作者致敬
在IT行业中,坐标转换是一个重要的领域,特别是在GIS(地理信息系统)和导航系统中。Java作为一种广泛应用的编程语言,被广泛用于开发这样的功能。本篇将深入探讨“七参数转换”在Java中的实现,并通过名为...
在进行单精度和双精度浮点数与十六进制转换时,需要注意的是,由于浮点数的存储方式涉及舍入误差,转换过程中可能会导致微小的精度损失。此外,不是所有的十六进制数都能准确表示为浮点数,特别是对于超出浮点数范围...
16进制(Hexadecimal)是一种逢16进1的计数方式,主要用在计算机科学中,因为它能更简洁地表示二进制数。浮点型(Floating-Point)数据是用于表示带有小数部分的数字,通常用于科学计算和工程应用,因为它们可以表示...
在Java编程语言中,将字符转换为十六进制表示的ASCII码是一项常见的任务,尤其是在处理字符串数据时。本文将深入探讨如何实现这个功能,并通过一个具体的示例代码`StringToAscii.java`进行演示。 首先,我们需要...
为了保证转换的精确性,代码可能还涉及到高精度计算、异常处理和地理坐标系的定义等细节。 在实际应用中,这种坐标转换功能常用于地图开发、导航系统、遥感图像处理等领域。理解并熟练运用`CoordinateConversion....
浮点数在计算机科学中是表示实数的一种方式,尤其在数学计算和科学计算中至关重要。IEEE是电气和电子工程师协会(Institute of Electrical and Electronics Engineers)的缩写,他们制定了一套标准,即IEEE 754,来...
Java 语言是一种静态类型语言,编程过程中的数据类型限制非常严格。因此,在编程过程中需要注意数据类型的转换。本文介绍了 Java 中的自动类型转换和强制类型转换的方法。 自动类型转换是指不需要书写代码,由系统...
在Java编程语言中,公式计算是一项常见的需求,特别是在科学计算、数据分析、数学建模等领域。为了简化这方面的代码编写,开发者经常会将各种计算操作封装成方法,以便在项目中直接调用。标题“java 公式计算汇总,...
Base64是一种将二进制数据编码为ASCII字符串的常见方法,便于在网络传输中使用。 `Base64Helper.java`可能包含与`StringUtils.java`类似的功能,专注于Base64编码和解码。在.NET和Java中进行加密操作时,通常会先将...
生辰八字是中国传统文化中用于预测命运的一种方式,它基于农历日期和时间,包括年、月、日、时四个部分,每个部分对应一个天干地支。在本示例中,我们将探讨如何使用Java实现这一功能,并确保精度达到秒级别。 首先...
JAVA计算器小程序(多进制计算、转换) 包含 2进制 8进制 10进制 16进制数的计算,转换
基于Java应用转换的计算按需远程执行开发与实现 本文将从应用自身的使用出发,介绍基于Java应用转换的计算按需远程执行开发与实现的过程。文章将从应用类别的划分、代理生成、应用类转换、应用类聚类、Endpoint的...
在GCJ-02坐标系中,由于采用了加密算法,直接进行坐标计算可能会出现误差,因此需要一个“邪恶”(可能是指复杂或者特殊)的转换过程来纠正这些误差,使得转换后的坐标更加准确。 在实际应用中,这些转换通常涉及到...
自动类型转换是在编译时期由Java虚拟机自动完成的一种类型转换方式。它遵循一定的规则,这些规则确保了数据类型的兼容性和程序的安全性。以下是自动类型转换的一些核心规则: 1. **布尔型与其他基本数据类型不可...
6. **LINQ转换**:如果VB.NET代码使用了LINQ查询,转换工具需要将其转换为Java的Stream API或其他查询方式。 转换过程可能涉及到一些复杂情况,比如VB.NET特有的语言特性(如With...End With、MyClass关键字等),...
该软件可以把c语言文件转换为java语言文件