关于Java中的IEEE765浮点数表示法
凌宇 在www.360doc.com中转帖【IEEE浮点数表示法】,经过仔细研究,终于有点心得了。
float转十六进制:
16进制浮点数的表示方法,根据IEEE的标准,分为32位和64位两种,参数分别如下:
符号位
指数位
指数偏移量
尾数位
32位
1[31]
8[23-30]
23[0-22]
127
64位
1[63]
11[52-62]
52[0-51]
1023
float
共计32位,折合4字节
由最高到最低位分别是第31、30、29、……、0位
31位是符号位,1表示该数为负,0反之。
30-23位,一共8位是指数位。
22-0位,一共23位是尾数位。
现在让我们按照IEEE浮点数表示法,一步步的将float型浮点数123456.0f转换为十六进制代码。
在处理这种不带小数的浮点数时,直接将整数部转化为二进制表示:1
11100010
01000000。
也可以这样表示:11110001001000000.0。
然后将小数点向左移,一直移到离最高位只有1位,就是最高位的1:1.11100010010000000。
一共移动了16位,在布耳运算中小数点每向左移一位就等于在以2为底的科学计算法表示中指数+1,所以原数就等于这样:1.11100010010000000
* ( 2 ^ 16
)。
好了,现在我们要的尾数和指数都出来了。显而易见,最高位永远是1,因为你不可能把买了16个鸡蛋说成是买了0016个鸡蛋吧?所以这个1我们还有必要保留他吗?好的,我们删掉他。
这样尾数的二进制就变成了:11100010010000000最后在尾数的后面补0,一直到补够23位:11100010010000000000000。
再回来看指数,一共8位,可以表示范围是0 - 255的无符号整数,也可以表示-128 -
127的有符号整数。
但因为指数是可以为负的,所以为了统一把十进制的整数化为二进制时,都先加上127,在这里,我们的16加上127后就变成了143,二进制表示为:10001111。
12345.0f这个数是正的,所以符号位是0,那么我们按照前面讲的格式把它拼起来:
0
10001111 11100010010000000000000
01000111 11110001 00100000
00000000
再转化为16进制为:47 F1 20 00,最后把它翻过来,就成了:00 20 F1 47。
==========================================================
按照IEEE浮点数表示法,将float型浮点数123.456f转换为十六进制代码。
整数部直接化二进制:100100011。
小数部的处理比较麻烦一些。
来看一下步骤:1 / 2
^1位(为了方便,下面仅用2的指数来表示位),
第1位:0.456小于位阶值0.5故为0;
2位,0.456大于位阶值0.25,该位为1,并将0.45减�
相关文档:
好久没用java,突一写起来,发现机器上没有设置环境变量,把设置方法总结一下
1. 修改/etc/profile文件
如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。
·用文本编辑器打开/etc/profile
·在pr ......
1. ActionForm中添加属性,FormFile类型对象。
private FormFile upLoadFile;
public FormFile getUpLoadFile() {
return upLoadFile;
}
public void setUpLoadFile(FormFile upLoadFile) {
this.upLoadFile = upLoadFile;
}
2. Action 中增加修改方法。
public ActionForward save(ActionMapping mapping, Action ......
原文:http://csharpindepth.com/Articles/Chapter5/Closures.aspx
第一段略。。。
大多数讲闭包的文章都是说函数式语言,因为它们往往对闭包的支持最完善。当你在使用函数式语言时,很可能已经清楚了解了什么是闭包,所以我想写一篇在经典OO语言出现的闭包有什么用处应该也是很合适的事情。这篇文章我准备讲一下C#(1� ......
//写这个程序也为了纪念王江民先生……话说当年他也是写过这个类似程序
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class game extends Applet implements ActionListener{
//定义变量
int num1, num2, num3, jieguo, jilu, ......
package com.sy.grasp;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularExpression {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
......