`
woodenfish
  • 浏览: 5997 次
社区版块
存档分类
最新评论

float或double的IEEE745 二进制形式

    博客分类:
  • JVM
阅读更多

下面两个函数可以返回float和double类型的数据的IEEE745二进制形式

public String convert(float num) {
		int intVal = Float.floatToIntBits(num);
		return intVal > 0 
				? "0" + Integer.toBinaryString(intVal) 
				: Integer.toBinaryString(intVal);
	}

	public String convert(double num) {
		long longVal = Double.doubleToLongBits(num);
		return longVal > 0 
				? "0" + Long.toBinaryString(longVal) 
				: Long.toBinaryString(longVal);
	}

 第二个函数有个bug,当形参为-0,+0,+0.0, +0.0d时,只返回0;但是形参为-0.0和-0.0d时,可以正确返回1000000000000000000000000000000000000000000000000000000000000000。第一个函数也有同样的问题。

还没想到很好的解决方法

分享到:
评论

相关推荐

    IEEE 745标准的32位二进制浮点数与十进制浮点数转换代码C#

    IEEE 745标准,也称为IEEE 754-1985,是国际电工委员会(IEEE)制定的一套关于浮点数运算的标准,它定义了如何用二进制表示单精度(32位)和双精度(64位)浮点数。 在32位的IEEE 745标准中,一个浮点数被分为三个...

    HEX-Float转换工具 16进制转成float 或double类型数据的一个小工具

    特别是在处理二进制数据或者进行低级编程时,了解如何将十六进制(HEX)转换为浮点数(float)或双精度浮点数(double)至关重要。这个"HEX-Float转换工具"就是这样一个实用程序,它帮助用户方便快捷地完成这种转换...

    浮点数二进制互转小工具

    "二进制转浮点数"的过程涉及解码二进制串,首先确定浮点数的正负(符号位),然后解析指数(以偏移量形式存储),最后是尾数(也称为 Mantissa 或 significand)。根据IEEE 754标准,指数部分是用移码表示的,尾数...

    十六进制(HEX)和浮点类型(float、double)转换工具

    对于十六进制转浮点,首先要将十六进制转换为二进制,然后根据IEEE 754的格式拆分出符号、指数和尾数。对于浮点转十六进制,则需要进行相反的操作:组合这些部分并转换回十六进制。 "HexFloat.exe"可能是一个实用...

    C# 按照IEEE 754标准对Float和Double类型进行转换

    例如,可以使用`BitConverter.GetBytes(float)`或`BitConverter.GetBytes(double)`来获取浮点数的字节数组,然后解析这些字节以了解其IEEE 754表示。反之,`BitConverter.ToSingle(byte[])`和`BitConverter.ToDouble...

    C# 浮点数与二进制之间的转换 源码

    然而,计算机内部是以二进制形式存储所有数据的,包括浮点数。了解浮点数与二进制之间的转换对于优化性能和理解底层机制至关重要。 标题“C# 浮点数与二进制之间的转换 源码”指的是一个C#程序,它提供了将浮点数...

    16进制与float互转

    1. 二进制表示:首先,我们需要将16进制数转换成二进制形式。例如,16进制数`0x42C80000`转换成二进制为`0100 0010 1100 1000 0000 0000 0000 0000`。 2. 分解结构:将二进制数按照IEEE 754的格式拆分成符号、指数和...

    浮点数与二进制转换工具

    这样的工具通常具有用户友好的界面,只需要输入浮点数或二进制串,就可以自动完成转换,并且可能提供正序和倒序转换的选项。 总之,浮点数与二进制之间的转换是计算机科学中的基础概念,对于理解和处理数字数据至关...

    6进制与浮点数(包括float和double)互转、十进制与16进制互换

    首先,我们需要明确一点:通常所说的6进制可能是误指,因为常见的进制系统主要是二进制(bin)、八进制(oct)、十进制(dec)和十六进制(hex)。在这里,我们假设“6进制”是作者对十六进制的误解或者表述不准确,...

    16位转浮点型float,MODBUS 32位转浮点型float 64位转双浮点型double

    计算机内部存储数字都是以二进制形式,而16进制是人类更易读的一种表示方式,1个16进制数可以表示4位二进制数。浮点数则是一种能够表示小数的数字格式,它由一个符号位、指数部分和尾数部分组成,遵循特定的规则,如...

    十六进制转float小工具,双击运行

    3. **十六进制转float**:这是该工具的核心功能,浮点数在计算机中是以特定的二进制格式存储的,称为IEEE 754标准。该工具能够理解这种格式,将十六进制数值解析为对应的浮点数值,这对于理解和调试涉及到浮点计算的...

    转换文本数字为二进制并保存

    4. **保存二进制数据**:转换后的二进制数据可以以文本文件或二进制文件的形式保存。文本文件通常是以ASCII码或UTF-8编码的二进制表示,而二进制文件则直接保存原始的比特序列。在C++中,可以使用`std::ofstream`...

    C#写的IEEE745数据转换程序

    这个程序能够将十进制(人类易读的)浮点数转换为IEEE745规定的四个字节的二进制形式,这种形式通常被PLC(可编程逻辑控制器)所识别。反之,它也能将PLC中的四字节浮点数解析回十进制表示,以便于理解和调试。 在...

    基于C++浮点数(float、double)类型数据比较与转换的详解

    这是因为浮点数在内存中的二进制表示导致的,且`float`和`double`各有不同的精度限制。 2. **浮点数转换为字符串**: 使用`sprintf()`函数将浮点数转换为字符串时,需要注意精度控制。对于`float`,它的小数点前后...

    二进制浮点转十进制(C#)

    在C#中,可以使用内置的`BitConverter`类来处理二进制数据,并利用`Single`或`Double`结构的成员方法来解析二进制浮点数。以下是一个简单的示例,将二进制字符串转换为十进制: ```csharp using System; public ...

    IEEE_745浮点数标准

    其中,单精度和双精度最为常用,分别对应于C语言中的`float`和`double`类型,或FORTRAN中的`real`和`double precision`类型。 - **单精度浮点数**:总共32位,其中1位符号位S,8位指数位E,23位尾数位M。 - **双...

    C# IEEE754浮点数转换示例代码

    public static double IEEE754Float(byte[] data, int i) { // ... (代码省略) } ``` 这两个函数的核心逻辑是通过解析输入的十六进制字符串或字节数组中的每个字节,从而获取符号位、指数位和尾数位的信息,并根据...

    float、double类型介绍.zip

    标题中的“float、double类型介绍”指的是在编程语言中,如C++、Java或Python等,用于表示浮点数的数据类型。浮点数是计算机科学中用来表示小数的一种方式,因为它们不是精确的,而是近似的。浮点类型通常分为两种...

    16进制数据与浮点型数据转换——c语言程序

    在计算机科学中,16进制常用于表示内存地址、颜色代码或二进制数据的简洁形式。 2. **浮点型数据**: 浮点型数据是计算机用来表示小数的类型,包括单精度浮点数(float)和双精度浮点数(double)。在C语言中,...

Global site tag (gtag.js) - Google Analytics