背景:
大家都知道,低精度的数字转换为高精度的数字是没有问题的,但是高精度的数字转换低精度的数字会精度受损。那精度是怎样受损的?转换的逻辑是怎样的了?以下为个人的猜想。
先上代码,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中的 `double` 类型精度问题,并提供几种解决方法。 #### 一、Java Double 精度丢失的原因 1. **二进制表示限制**:`double`...
在IT行业中,坐标转换是一个重要的领域,特别是在GIS(地理信息系统)和导航系统中。Java作为一种广泛应用的编程语言,被广泛用于开发这样的功能。本篇将深入探讨“七参数转换”在Java中的实现,并通过名为...
在进行单精度和双精度浮点数与十六进制转换时,需要注意的是,由于浮点数的存储方式涉及舍入误差,转换过程中可能会导致微小的精度损失。此外,不是所有的十六进制数都能准确表示为浮点数,特别是对于超出浮点数范围...
Java自定义实现本地语言与ASCII之间的互相转换。可在开发项目中直接调用的工具类。
Java作为一种广泛使用的编程语言,提供了丰富的库和工具,可以方便地实现这样的复杂计算。在这个项目中,开发者使用Java编写了代码,实现了大地坐标系和空间直角坐标系之间的相互转换,并且包括了求解七参数的过程。...
在Java编程语言中,强制类型转换是将一个数据类型转换为另一个数据类型的语法操作。这通常发生在需要将数值从精度较高的类型转换为精度较低的类型,或者在处理对象时需要明确指定子类对象为父类类型的情况。在“java...
在Java编程语言中,将字符转换为十六进制表示的ASCII码是一项常见的任务,尤其是在处理字符串数据时。本文将深入探讨如何实现这个功能,并通过一个具体的示例代码`StringToAscii.java`进行演示。 首先,我们需要...
java计算机硬盘大小转换(B,KB,MB,GB,TB,PB之间的大小转换) java 硬盘大小转换 数据转换 内存转换 存储大小转换
在Java编程语言中,公式计算是一项常见的需求,特别是在科学计算、数据分析、数学建模等领域。为了简化这方面的代码编写,开发者经常会将各种计算操作封装成方法,以便在项目中直接调用。标题“java 公式计算汇总,...
标题中的"C# Java互相转换工具"指的是一个软件或库,旨在帮助开发者在C#和Java之间进行代码迁移或互操作。这个工具可能是为了方便那些在两个不同平台间工作或者需要跨语言共享代码的开发人员。从描述中的链接来看,...
生辰八字是中国传统文化中用于预测命运的一种方式,它基于农历日期和时间,包括年、月、日、时四个部分,每个部分对应一个天干地支。在本示例中,我们将探讨如何使用Java实现这一功能,并确保精度达到秒级别。 首先...
在IT行业中,图像处理是不可或缺的一部分,特别是在跨平台和网络应用中。本主题涉及的是将Windows Metafile Format (WMF) 和 Enhanced Metafile Format (EMF) 图像转换为更通用且网络友好的 Scalable Vector ...
1. **类型转换概述**:Java中的类型转换分为两种,一种是自动类型转换(也称为隐式类型转换),另一种是强制类型转换(也称为显式类型转换)。自动类型转换是由编译器自动完成的,而强制类型转换需要程序员通过特定...
在Java编程环境中,XML(可扩展标记语言)和XSLT(可扩展样式表语言转换)是处理和转换XML文档的常见工具。XSLT是一种专门用于将XML文档转换为其他XML、HTML或文本格式的语言。本文将详细介绍如何在Java中使用XSLT来...
Base64是一种将二进制数据编码为ASCII字符串的常见方法,便于在网络传输中使用。 `Base64Helper.java`可能包含与`StringUtils.java`类似的功能,专注于Base64编码和解码。在.NET和Java中进行加密操作时,通常会先将...
从给定的文件标题“字符串转换为计算公式的若干种方法”及描述“个人收集的几种将字符串表达式转换为计算公式的方法”中,我们可以看出文章主要探讨的是如何将文本形式的数学表达式(字符串)转化为可以进行计算的...
JAVA计算器小程序(多进制计算、转换) 包含 2进制 8进制 10进制 16进制数的计算,转换
在IT行业中,将图片转换为视频是一项常见的任务,特别是在多媒体处理、动画制作或者数据可视化等领域。Java作为一种跨平台的编程语言,提供了丰富的库和API来处理这类任务。本篇文章将详细探讨如何使用Java实现图片...
根据提供的文件信息,本文将详细解析如何通过Java编程语言实现计算汉字笔画数的方法,并对代码中的关键逻辑进行深入分析。 ### 概述 在Java中实现计算汉字笔画数的功能,主要涉及到对汉字编码的理解以及如何根据...