2 qq 33286911 qq_33286911 于 2016.03.06 20:43 提问

计算机组成原理 浮点数的知识

想要学习这门课,可是被浮点数难倒了,哪位可以给我讲讲浮点数到底是怎么来的?

里面的阶码,尾数的是怎么运算的?

还有怎么和十进制之间转换?

3个回答

caozhy
caozhy   Ds   Rxr 2016.03.06 21:21

科学计数法懂么?任何一个数,都可以表示为(-)0.xxxx * 10 ^ (-)n的形式
比如 1200 3.14 -0.00123 分别可以表示为 0.12 * 10^4 0.314 * 10^1和 -0.123 * -10^2
总之,我们可以用4个变量表示一个数,符号 尾数 指数的符号 指数,比如 -0.123 * -10^2,分别为 -,0.123, -, 2
二进制表示的浮点数也是一样,其中阶码就是指数,两个符号位各自需要1个二进制表示。
因此二进制浮点数转换为十进制其实也一样,你只要把尾数乘以对应2的阶码次方就可以。

lx624909677
lx624909677   Ds   Rxr 2016.03.07 16:18

为了表示浮点数,数被分为两部分:整数部分和小数部分.例如,浮点数14.234就有整数部分14和小数部分0.234.首先把浮点数转换成二进制数,步骤如下:1把整数部分转换成二进制.2把小数部分转换成二进制.3在两部分之间加上小数点.浮点数还可以规范化,浮点数可以用单精度表示法和双精度表示法.规范化只存储这个数的三个部分的信息:符号,指教和尾数.如+1000111.0101规范化后为

  • 2^6 * 1.0001110101 符号 指数 尾数 规范化数的单精度表示法如+2^6*1.01000111001解: 由于符号为正,就用0表示.指数是6,在Excess_127表示法中,给指数加上127得到133.用二进制表示,就是10000101.尾数是01000111001.当把位数增加到32位,得到01000111001000000000000.注意不可以漏掉左边的0,因为它是小数.漏掉了那个0就相当于把这个数乘于2.这个数在内存中以32位数存储.如下所示 符号 指数 尾数 0 10000101 01000111001000000000000
WinsenJiansbomber
WinsenJiansbomber   2016.03.06 23:48

参考《那年声明理解不了定义与初始化》
http://blog.csdn.net/WinsenJiansbomber/article/details/50641687
回顾微机原理-浮点数

至于前面跳过一个细节,那就是小数 0.1,它在内存中的样子恐怕没人认识。这涉及到计算器原理,于是翻了翻谭老主编的《微机原理与接口技术》(ISBN 7-302-04603-4/TP·2726) 结果发现P20整数原码的表达式中的指数+号是错的,正确的是用-号。还是上网找资料书快,今天网络流行了,信息获取的迅速是最大的便利,也是最大的弊端,任何事都有两面。网络的泛滥也带来大量垃圾信息,因此信息过滤是网络世界的一个基础技能。

关于浮点数在 IEEE 标准中,将连续字节的所有二进制位分割为符号位,指数位和尾数位三个区。

符号位 Sign,占最高位1个比特,用 0 表示数值为正数,而 1 则表示负数。
指数位 Component,单精度数为 8 比特,双精度数为 11 比特。分别可以表示数值的范围0~255、0~2047,通过偏移值 (Bias),可以表达的数值分别为-127~128、-1023~1024,这样就可以表示指数的正负。实际的指数值的两个极植,以单精度说明,即 -127 以及 +128 保留用作特殊值,它们的二进位分别为全0和全1。这样,实际可以表达的有效指数范围就在 -127 和 127 之间。
尾数位 Mantissa,对于双精度浮点数,尾数位为剩下的52比特,单精度则为23比特。
为了节省内存,约定底数为2,小数点左边为1不记录,以科学记数法表示。例如,十进数10转换为单精度浮点数表示:

10D => 1010B => 1.01*2^3
=> 00000001 11010000 00000000 00000000 二进制表达
=> 00000001 10100000 00000000 00000000 省略小数点左边的1
=> 01000001 00100000 00000000 00000000 指数偏移127
=> 0x41200000 十六进制表达
以上变换过程可以用 Hex Workshop 来验证,或以前面的0.1来进行逆向转换:

0x401455 mov $0x9999999a,%eax
0x40145a mov $0x3fb99999,%edx
0x40145f mov %eax,-0x30(%ebp)
0x401462 mov %edx,-0x2c(%ebp)
寄存器 edx 的值存在高地址,根据 x86 使用的 Little-Endian规则,edx 的值也是高位,因此 0.1 的连续表达及转换过程:

0x3fb999999999999a 内存存储方式
=> 00111111 10111001 10011001 ... 10011001 10011010 二进制展开
=>0|0111111 1011|1001 10011001 ... 10011001 10011010 分割区域
=>0|0111111 1011|11001 10011001 ... 10011001 10011010 补整数1
=>提取符号位0,指数位去偏移-4,尾数1.10011001....
=>0.000110011...=>0*2^1 + 0*2^-1 + 0*2^-2 + 0*2^-3 + 1*2^-4 + 1*2^-5....
=>0.0625 + 0.03125 + ...
求值过程会发现,浮点运算是有精度丢失的问题的,因为 0.1 这种表达是一个近似值。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
软考全攻略--计算机组成原理
一、进制的表示和转换   1、进制表示       二进制:表示为B,使用0和1;       十进制:表示为D;       八进制:表示为O,逢8进1;       十六进制:表示为H,9后的数使用字母表示,从A-F;    2、  进制转换         二进制–>八进制和十六进制,分别将二进制每三位和四位为单元转换为八进制和十六进制;         八进制和十六进制–>为二进制是将每位
备战软考(1) 计算机组成原理之数据表示
众所周知,计算机是由硬件和软件组成,其中硬件系统主要由运算器,控制器,存储器,输入设备和输出设备5大部分组成,将运算器和控制器集成在一块芯片上,就构成了我们熟悉CPU.但是我们今天要讨论不是这些玩意儿,而是在计算机内部数据和文字的表示方法,你可能马上会想:这还用讨论么,不就是一些数字和英文字母嘛!非也,我只能说你图样图森破!      接触过的人都知道,我们所使用的计算机只认识0和1,其他的一概
计算机组成原理知识点梳理(一)
注:所学教材为《计算机组成原理(第二版)》 唐朔飞 编著 ; 本次梳理涵盖内容为: 第一章 计算机系统概论 1.1 计算机系统简介 1.2 计算机的基本组成 参考内容以及图片来源为书本和csdn博文 第一章 计算机系统概论 1.1 计算机系统简介 计算机系统结构:主要研究软硬件功能的分配和对软硬件界面的确定。 计算机组成是计算机系统结构的逻辑实现。 计算机实现是对计
计算机组成原理期末复习重点总结
本文档适用于大学生学习。主要归纳了计算机组成原理该科目的知识内容,用于期末复习。其中,部分资料为手写归纳,若出现错误请以课本为主
计算机组成原理复习总结
计算机组成原理期末复习 一、缩写词解释: CPU:中央处理器    ALU:算术逻辑单元    I/O:输入输出接口    RAM:随机存储器   SRAM:静态随机访问存储器   DRAM:动态随机访问存储器    ROM:只读存储器   PROM:用户可编程的只读存储器   EPROM:紫外线可擦除可编程只读存储器     FLASH:闪速存储器   EEPROM:用电
计算机组成原理知识点汇总
一、 冯.诺依曼思想体系——计算机由运算器、控制器、存储器、输入输出设备五部分组成,存储程序,按地址访问、顺序执行。   二、 计算机系统的层次结构——微程序级→机器级→操作级→汇编→高级语言。   第二章   一、一个定点数由符号位和数值域两部分组成。按小数点位置不同,定点数有纯小数和纯整数两种表示方法。   二、一个浮点数标准化表示由符号位S、阶码E、尾数M三个域组成。
计算机组成原理知识简介
计算机,通俗的讲就是一个会计算机的机器,跟初中学数学时用的计算器没多大区别,无非是变得比较复杂而已。-----个人理解 1:其实人也是一台计算机(不过有点特殊,并且在某些方面来说是比电子计算机高级---富有感情),人外部的器官(眼,耳,手脚。。。),相当于计算机的外部设备(鼠标,键盘,显示器,音响。。。)。内部的CPU相当于人大脑。内存相当于人的记忆。等等    2:CPU:计
计算机组成原理学习笔记(一)
任何一个语言处理系统中,都包含一个翻译程序(translator),它能把一种编程语言表示的程序转换成等价的另一种编程语言程序。 翻译程序有以下三类。 (1)汇编程序(assembler):也称汇编器,用来将汇编语言源程序翻译成机器语言目标程序。 (2)解释程序(interpreter):也称解释器,用来将源程序中的语句按其执行顺序逐条翻译成机器指令并立即执行。例如,BASIC解释程序直接启
计算机组成原理基本知识
寄存器: 在CPU中 地址总线: 传送地址,在内存中找到相应的地址。只能是从CPU--- 地址总线: 传送数据,从CPU到外面,或者从外面到CPU 举例:   mov   [BX],AX cpu先计算出物理地址,再通过地址总线(AB)找到内存中的地址(数电讲过,16根线可以1,0找到2^16个地址) 然后将AX中的值通过数据总线(DB)写到该内存。(怎么实现的就是硬件的问题了)。
软考——计算机组成原理
一、计算机组成先和小编从一张图片了解计算机的组成部分 从图片可以看出,小编将可以从CPU(运算器和控制器)、存储器、输入输出设备、总线结构和数据这5个方面来了解计算机的组成。二、运算器 数据在运算器中的流向 ①、数据缓冲寄存器:CPU和内存、外部设备之间数据传送的中转站。 ②、累加器:当ALU运算时,为它提供一个工作区。 ③、算术逻辑单元:运算器的重要组成部分,负责处理数据,实现对数据的