学习在IEEE编码时节省时间

ZDNet软件频道 时间:2003-11-25 作者:ZDNet China |  我要评论()
本文关键词:javatips
在一个java的项目里,IEEE编码可以帮您在二进位与浮点数互换节省时间。让我们来看看它是如何实现的!
本文译自Builder.com,未经许可请勿转载

当你听到IEEE浮点数的时候,你绝对不会按位一位一位的处理它们。

下次,当你的Java项目需要从一系列的二进位中创建浮点数或者从浮点数中创建一个二进制数位的序列的时候,Float类可以帮助你工作。

复习IEEE浮点数

IEEE754单精度浮点数的格式定义了存储浮点数的方法。最高位是符号位(sign),符号位后的八位是阶码(exponent),最后23位是尾数(mantissa)。看下面的解释:

SEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMM

where:

S = sign bit
E = exponent
M = mantissa

你可以从IEEE的网站上买到完整的IEEE浮点数的完整解释。(如果你在线搜索IEEE754,你可以找到免费资料)

Float对Java的贡献

下面的程序使用了两个Float方法将一个Float转换为bits, bits最后返回为float。

要将一个float转换为一系列的bits,利用Float.floatToInBits(float f)。这种方法返回一个32位的整数,这些整数扮演IEEE754需要的浮点数的bits。你可以把它作为一个变量。

如果要向反方向移动,你可以利用Float.intBitsToFloat(int bits)方法。这种方法将整数通过以后打开bits放入IEEE的浮点数里。

下面就是这个样本程序:

public class BitsTip {
      public static void main(String args[]) {
        float f = Float.parseFloat(args[0]);
        int bits = Float.floatToIntBits(f);

        System.out.println("bits: " + bits);
        System.out.println("back to float: " + Float.intBitsToFloat(bits));
    }
}

如果你需要手动进行编码的转换,你将非常感激这两个简单的方法帮助你节省了时间。如果你需要处理64位的数字,你需要Double wrapper类。对于双精度来说,使用这种类的方法和单精度一样。

确保阅读所有你获得的javadoc并且对这些方法能够完成什么功能有一个全面的了解。


David Petersheim是Genscape公司的应用开发主管。他设计并开发了服务方应用(server-side applications)以便可以获得和处理实时能量数据




责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134