精华内容
下载资源
问答
  • 计算机组成原理 【定点数 浮点数】不断更新定点数==定点纯小数====定点纯整数==浮点数==浮点数====IEE754== 定点表示:小数点位置固定 浮点表示:小数点位置不固定 定点数 纯小数 纯整数 带符号数 不带符号数 定点...

    计算机组成原理 【定点数 浮点数】不断更新

    定点表示:小数点位置固定
    浮点表示:小数点位置不固定

    定点数

    • 纯小数
    • 纯整数
    • 带符号数
    • 不带符号数

    定点纯小数

    在这里插入图片描述
    在这里插入图片描述

    定点纯整数

    在这里插入图片描述

    浮点数

    浮点数

    在这里插入图片描述
    在这里插入图片描述

    IEE754

    在这里插入图片描述

    展开全文
  • 本文介绍了进制转换、编码方式、定点数浮点数、IEEE 754标准

    一、数制

    1. 介绍

    (1) 几种常见的数制

    • 二进制(Binary):0 1
    • 八进制(Octal):0 1 2 3 4 5 6 7
    • 十进制(Decimal):0 1 2 3 4 5 6 7 8 9
    • 十六进制(Hexadecimal):0 1 2 3 4 5 6 7 8 9 A B C D E F

    (2) 几个概念

    摘自百度百科

    • 数码:数制中表示基本数值大小的不同数字符号。例如,十进制有10个数码:0、1、2、3、4、5、6、7、8、9。
    • 基数:数制所使用数码的个数。例如,二进制的基数为2;十进制的基数为10。
    • 位权:数制中某一位上的1所表示数值的大小(所处位置的价值)。例如,十进制的123,1的位权是102,2的位权是101,3的位权是100。二进制中的 1011 (一般从左向右开始),第一个1的位权是23,0的位权是22,第二个1的位权是21,第三个1的位权是20

    (3) 几种进制的比较

    我们以100D为例,它的其他进制分别为01100100B、144O、64H,可以看出:进制的基数越大,我们用来表示一个数所用到的位数越少。

    我们以乘法为例,十进制的乘法对应的情况多(九九乘法表、0和其他数相乘,共有100种情况);二进制的乘法只有4种(00、01、10、11相乘)。可以看出:进制的基数越大,我们需要进行的运算越复杂。

    我们以物理实现为例,二进制的物理实现可以用电路中的高低电平,十进制的物理实现可能需要我们的手指头或者脚指头。可以看出:进制的基数越大,物理实现越困难。

    所以计算机选择了运算简单、物理实现容易的二进制。

    2. 进制转化

    (1) r进制 → \rightarrow 十进制

    K n K n − 1 … K 2 K 1 K 0 K − 1 K − 2 … K − m = K n × r n + K n − 1 × r n − 1 + … + K 2 × r 2 + K 1 × r 1 + K 0 × r 0 + K − 1 × r − 1 + K − 2 × r − 2 + … + K − m × r − m ( 其 中 K 为 数 码 、 r 为 基 数 、 n 为 第 几 位 ) K_nK_{n-1}…K_2K_1K_0K_{-1}K_{-2}…K_{-m} = K_n×r^n+K_{n-1}×r^{n-1}+…+K_2×r^2+K_1×r^1+K_0×r^0+K_{-1}×r^{-1}+K_{-2}×r^{-2}+…+K_{-m}×r^{-m} (其中K为数码、r为基数、n为第几位) KnKn1K2K1K0K1K2Km=Kn×rn+Kn1×rn1++K2×r2+K1×r1+K0×r0+K1×r1+K2×r2++Km×rmKrn

    如: 1011.1 B = 1 × 2 3 + 0 × 2 2 + 1 × 2 1 + 1 × 2 0 + 1 × 2 − 1 = 11.5 D 1011.1B = 1×2^3+0×2^2+1×2^1+1×2^0+1×2^{-1} = 11.5D 1011.1B=1×23+0×22+1×21+1×20+1×21=11.5D

    (2) 十进制 → \rightarrow r进制

    • 整数部分:除基取余,自下向上

      以十进制转换为二进制,11D=1011B,为例

    在这里插入图片描述

    • 小数部分:乘基取整,自上向下

      以十进制转换为二进制,0.6D=0.10011……B,为例
      在这里插入图片描述

    (3) 2n进制之间的转化

    • 二进制 → \rightarrow 其它进制:

      1. 从小数点开始,向两边分组,n位一组,不够补0
      2. 将每组转化为对应进制

      (如四进制是2位一组;八进制是3位一组; 2n进制是n位一组)

      以1001101.1001101B = 115.464O为例:

    在这里插入图片描述

    • 其它进制 → \rightarrow 二进制:直接将每位转化为对应的二进制形式即可。

    二、如何在计算机中表示数?

    1. 无符号数和有符号数

    计算机中参与运算的数分为两类:无符号数、有符号数。

    (1) 无符号数

    在这里插入图片描述

    无符号数即没有符号的数,如1,0,1010……

    n位无符号数的表示范围为:0~2n -1

    可能会疑惑这个范围是怎么来的?举个例子就知道了

    如8位无符号数00000000~11111111,11111111 = 10000000 - 1 = 28-1

    (2) 有符号数

    在这里插入图片描述

    有符号数即带正负号的数,如+1011,-1110……

    但是计算机中无法存储正负号,所以需要将正、负号规定为0、1

    将符号数字化的数叫机器数,带±号的数叫真值

    2. 机器数的表示形式

    由于机器数将真值的符号「数字化」了,所以机器数需要使用新的编码方式来表示真值

    (1) 原码表示法

    原码是最简单的一种表示方法。

    规则:

    • 符号位用0表示正数,用1表示负数
    • 数值位为真值的绝对值
    • 整数用「逗号」将符号位和数值位隔开;如 0,101101
    • 小数用「小数点」将符号位和数值位隔开;如1.11011

    表示范围(真值为x,原码字长为n+1):

    • 纯小数:-(1 - 2-n)<= x <= 1 - 2-n
    • 纯整数:-(2n - 1)<= x <= 2n - 1(理解方式:1111 = 10000 - 1)

    原码中的0有两种表示方式:0,0000和1.0000

    优点:简单明了,易于和真值转换;

    缺点:原码进行减运算时比较麻烦,需要比较绝对值才能确定结果的符号。

    (2) 补码表示法

    由于使用原码进行减法时比较麻烦,所以我们可以避免减法,即找到一个与负数等价的正数来代替负数,这个代替即为补码。

    规则:

    • 当真值为正数时,补码和原码相同
    • 当真值为负数时,原码通过「除符号位外」每位取反,末位加1求得补码(求反加1)
    • 当真值为负数时,补码通过「除符号位外」每位取反,末位加1求原码

    表示范围(真值为x,原码字长为n+1):

    • 纯小数:-1 <= x <= 1 - 2-n(比原码多表示一个 -1)
    • 纯整数:- 2n <= x <= 2n - 1(比原码多表示一个 -2n

    补码消除了减法运算。

    (3) 反码表示法

    反码用来作为由原码求补码或者由补码求原码的中间过渡

    规则:

    • 当真值为正数时,反码和原码相同

    • 当真值为负数时,反码为原码「除符号位外」每位取反

    表示范围和原码一样

    (4) 移码表示法

    直观上,我们不容易通过原码判断其真值大小,比如原码1111111和原码00000000,看起来好像是前者大,但其实前者的真值是-127,后者是0。

    移码是在真值上加一个常数 2 n 2^n 2n,作用是将移码表示的范围在数轴上正向移动 2 n 2^n 2n个单元

    规则:补码的符号位取反即得到移码

    最小真值的移码为全0

    表示范围和补码相同

    用移码表示浮点数的阶码,能方便地判断浮点数的阶码大小
    在这里插入图片描述

    3. 数的定点表示和浮点表示

    (1) 定点表示

    定点数:小数点固定在某一位置的数。

    既然事先约定好了,所以小数点不再使用了,通常将数据表示为纯小数或纯整数。

    在这里插入图片描述
    当尾数部分各位均为1时,数的绝对值最大,所以

    有n位尾数的定点纯小数的表示范围:-(1-2-n)~1-2-n(n是尾数位数,不包括符号位 )

    有n位尾数的定点纯整数的表示范围:-(2n-1)~2n-1(n是尾数位数,不包括符号位 )

    (2) 浮点表示

    浮点数:小数点的位置是可以浮动的数。

    在这里插入图片描述

    浮点数的真值: X = r E × M ( r = 2 , E 为 阶 码 , M 为 尾 数 ) X = r^E × M(r=2,E为阶码,M为尾数) X=rE×Mr=2EM

    • 阶码:是整数,「阶符」和「阶码的位数m」决定了「浮点数的表示范围」及「小数点的实际位置」
    • 尾数:是纯小数,「数符」决定了「浮点数的正负」,「尾数的位数n」决定了「浮点数的精度」

    举例:阶码和尾数用补码表示,求浮点数0,01;0.01001的真值?

    阶码为0,01,其原码为0,01,真值为+1。尾数为0.01001,其原码为0.01001,真值为+0.01001。

    所以浮点数的真值为:21×0.01001 = 0.1001

    0.1001可以看成是1001右移四位,所以真值为9/16。

    非规格化浮点数的表示范围: X = r E × M ( r = 2 ; E 为 阶 码 , 数 值 位 有 m 位 ; M 为 尾 数 , 数 值 位 有 n 位 ) X = r^E × M(r=2;E为阶码,数值位有m位;M为尾数,数值位有n位) X=rE×Mr=2;E,m;M,n

    在这里插入图片描述

    几个临界点:

    • 最大正数: 2 2 m − 1 × ( 1 − 2 − n ) 2^{2^m-1}×(1-2^{-n}) 22m1×(12n)

      • 阶码为最大正整数:符号位为0,数值位全1,(即0,11……11),E=2m-1
      • 尾数为最大正小数:符号位为0,数值位全1,(即0.11……11),M=1-2-n
    • 最小正数: 2 − ( 2 m − 1 ) × 2 − n 2^{-(2^m-1)}×2^{-n} 2(2m1)×2n

      • 阶码为最小负整数:符号位为1,数值位全1,(即1,11……11),E= -(2m-1)
      • 尾数为最小正小数:符号位为0,数值位最后一位为1,(即0.00……001),M=2-n
    • 最大负数: − 2 − ( 2 m − 1 ) × 2 − n -2^{-(2^m-1)}×2^{-n} 2(2m1)×2n

      • 阶码为最大负整数:符号位为1,数值位全1,(即1,11……11),E= -(2m-1)
      • 尾数为最大负小数:符号位为1,数值位最后一位为1,(即1.00……001),M= -2-n
    • 最小负数: − 2 ( 2 m − 1 ) × ( 1 − 2 − n ) -2^{(2^m-1)}×(1-2^{-n}) 2(2m1)×(12n)

      • 阶码为最大正整数:符号位为0,数值位全1,(即0,11……11),E= 2m-1
      • 尾数为最小负小数:符号位为1,数值位全1,(即1.11……11),M= -(1-2-n)
    • 上溢:浮点数阶码大于最大阶码时,此时机器停止运算,进行中断溢出处理

    • 下溢:浮点数阶码小于最小阶码时,将尾数各位强置为零,按机器零处理,机器可以继续正常运行

    (3) 规格化:

    为了提高浮点数的精度,其尾数必须为规格化数。

    规格化数:最高n位不全为0的数为规格化数

    基数为2n的浮点数的规格化过程:

    • 左规:尾数左移n位,阶码减1
    • 右规:尾数右移n位,阶码加1

    如:当基数为2时,最高位为1的数为规格化数

    • 左规:尾数左移1位,阶码减1;
    • 右规:尾数右移1位,阶码加1;

    浮点数规格化后的临界值:

    • 最大正数: 2 2 m − 1 × ( 1 − 2 − n ) 2^{2^m-1}×(1-2^{-n}) 22m1×(12n)
    • 最小正数: 2 − ( 2 m − 1 ) × 2 − 1 2^{-(2^m-1)}×2^{-1} 2(2m1)×21
      • 尾数为最小正小数:符号位为0,数值位最高位为1,其余位为0,(即0.10……000),M=2-1
    • 最大负数: − 2 − ( 2 m − 1 ) × 2 − 1 -2^{-(2^m-1)}×2^{-1} 2(2m1)×21
      • 尾数为最大负小数:符号位为1,数值位最高位为1,其余位为0,(即1.10……000),M= -2-1
    • 最小负数: − 2 ( 2 m − 1 ) × ( 1 − 2 − n ) -2^{(2^m-1)}×(1-2^{-n}) 2(2m1)×(12n)
      • 阶码为最大正整数:符号位为0,数值位全1,(即0,11……11),E= 2m-1
      • 尾数为最小负小数:符号位为1,数值位全1,(即1.11……11),M= -(1-2-n)

    (4) IEEE 754标准

    在这里插入图片描述

    IEEE标准的三种常用浮点数:

    在这里插入图片描述

    规格化的32位浮点数x的真值表示: ( − 1 ) S × 1. M × 2 E − 127 (-1)^S×1.M×2^{E-127} (1)S×1.M×2E127
    规格化的64位浮点数x的真值表示: ( − 1 ) S × 1. M × 2 E − 1023 (-1)^S×1.M×2^{E-1023} (1)S×1.M×2E1023

    举两个例子:

    在这里插入图片描述在这里插入图片描述

    参考资料:《计算机组成原理 唐朔飞》、《计算机组成原理 白中英 第五版》

    如有错误,还请指正。

    展开全文
  • 定点数 浮点数 源码 反码 补码 移码

    千次阅读 2019-09-24 18:06:24
    机器数:一个数在计算机中的二进制表示形式,叫做这个数的机器数,机器...定点数:定点整数就是小数点在末尾,定点小时就是纯小数,小数位在符号位之后 浮点数:小数点位置可以浮动的数据,表达式:N=M*R^E其中N为...

    机器数:一个数在计算机中的二进制表示形式,叫做这个数的机器数,机器数是带符号的,在计算机中用一个数的最高位存放符号,正数为0.负数为1

    真值:因为第一位是符号位,所以机器数的形式值不等于真正的数值,所以将带符号位的机器数对应的真正数值成为机器数的真值

    定点数:定点整数就是小数点在末尾,定点小时就是纯小数,小数位在符号位之后

    浮点数:小数点位置可以浮动的数据,表达式:N=M*R^E  其中N为浮点数,M为尾数(mantissa),E为阶码(exponent),R为阶的基数,即底数,一般选择2的阶数。尾数主要解决符号位,数据位,阶码里主要是阶符,数据

     

    原码:就是符号位加上真值的绝对值。。如果机器字长为n,那么一个数的原码就是用一个n位的二进制数,其中最高位为符号位,正数为0,负数为1,剩下的n-1位表示概数的绝对值,位数不够用0补全。正数的原码,反码,补码都一样,0的原码和反码都有两个

     X=+101011 , [X]原= 00101011    X=-101011 , [X]原= 10101011

    反码:反码就是在原码的基础上,符号位不变,其他位按位取反(正数的反码为本身)

    X=-101011 , [X]原= 10101011 ,[X]反=11010100

    补码:其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)(正数的补码是其本身)

    X=-101011 , [X]原= 10101011 ,[X]反=11010100,[X]补=11010101

    移码:将补码的符号位取反即可

    X=-101011 , [X]原= 10101011 ,[X]反=11010100,[X]补=11010101,[X]移=01010101

    展开全文
  • 很不错的课件,能够给初学者很大的帮助,内容很详细,值得一看,尤其是刚刚学习计算机组成原理的同学。
  • 定点数 整数和小数 以下码制均是解决如何表示正负 原码 符号+数值。 整数:正数0/负数1+数值 小数:正数0/负数1+数值 有0000 0000(+0)与1000 0000(-0)之分。 所以整数范围是从-127(1111 1111)~+127(0111 ...

    定点数

    整数和小数
    在这里插入图片描述
    以下码制均是解决如何表示正负

    原码

    符号+数值。
    整数:正数0/负数1+数值
    小数:正数0/负数1+数值

    有0000 0000(+0)与1000 0000(-0)之分。
    所以整数范围是从-127(1111 1111)~+127(0111 1111)
    小数范围是从-(1-2-7) [1111 1111]~+(1-27) [0111 1111](8位)

    补码

    先不管正负,写出对应二进制。(1)若为正数,则不变(2)若为负数,则每位取反,末位加1[从右往左找到第一个1,1左边的(包括)不变,1右边的取反]
    这种码制是为了加减法而诞生的,所有加减法,都视为加法(减法视为加上一个负数),结果无需变化,仍然为补码。
    整数:正数0/负数1+数值(负数需变换)
    小数:正数0/负数1+数值(负数需变换)

    由此衍生出变形补码,两位符号位,正数00,负数11。若计算后为00/11,则无溢出;若为01/10,则溢出。

    无+0与-0之分,只有+0。
    所以整数范围从-128 [1000 0000] ~ +127 [0111 1111]
    小数范围从-1[1000 0000] ~ +(1-2-7) [0111 1111]。

    反码

    正数不变,负数每位取反
    这种码制用的不多,不如补码方便,也不如原码直观。
    有+0(0000 0000)与-0(1111 1111)之分。
    所以整数范围从-127(1000 0000) ~ +127(0111 1111)
    小数范围从-(1-2-7)[1000 0000] ~ +(1-2-7)[0111 1111]

    移码

    补码+偏移量28-1。求出补码,再将补码符号位取反。
    符号1为正 0为负
    为了比较而生。可以直接通过比较移码的码值,来判断两个数的大小。主要用于浮点数的阶码表示,所以一般只有整数。
    无+0(1000 0000)与-0之分。
    所以整数范围从-128[0000 0000] ~ +127[1111 1111]

    注意:IEEE-754浮点数中采用的偏移量不是2n-1

    四种码制比较

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    除了原码,同为(正的/负的):真值越大对应的码值也越大
    而原码,同为正的:真值越大对应的码值也越大;同为负的,:真值越大对应的码值越小。
    原码和反码是类似的:反码是由原码各位取反得到的,它们都有+0 -0。
    补码和移码是类似的:补码是由反码加1得到的,他们都只有+0。
    补码为了计算、阶码为了比较

    浮点数

    浮点数其实是二进制的科学计数法。
    F=M×2E M是尾数,E是阶数。存下M E就能表示一个二进制数。
    M一般是用补码小数来表示。而E一般是用移码整数来表示/也有补码

    浮点数加减运算时,需要对阶,利用阶码就能快速知道哪个阶码大,阶码也方便规格化

    分为非规格化浮点数(类似0.005 ×10-3这种不按规矩写的) 和 规格化浮点数(类似2.5 × 108这种按规矩写的)
    规格化浮点数 尾数(补码)M>0:M=0.1XXX;M<0:M=1.0XXX;
    规格化正数范围:1/2 ~ 1-2-n+1 规格化负数 -(1/2+2-n+1) ~ -1
    规格化:把非规格化 转化成 规格化。
    左规:尾数左移一位,阶码减一 ;右规:尾数右移一位,阶码加一

    范围计算

    非规格化浮点数范围
    E阶码 补码/移码 整数 数值位k位 范围-2k ~ 2k-1
    M尾数 补码 小数 数值位n位 正数范围2-n~ 1-2n 负数范围-1 ~ -2-n
    最小负数 尾数负数最小 -1 阶码最大 2k-1
    最大负数 尾数负数最大-2-n 阶码最小 -2k
    最小正数 尾数正数最小2-n 阶码最小-2k
    最大正数 尾数正数最大1-2n阶码最大2k-1
    在这里插入图片描述
    规格化浮点数
    阶码范围与上相同
    E阶码 补码/移码 整数 数值位k位 范围-2k ~ 2k-1
    M尾数 补码 正数范围 0.5 ~ +(1-2-n) 0100 0000~0111 1111
    负数范围-1 ~ -(1/2+2-n) 1000 0000~1011 1111
    最小负数 尾数负数最小-1 阶码最大2k-1
    最大负数 尾数负数最大-(1/2+2-n)阶码最小-2k
    最小正数 尾数正数最小0.5 阶码最小-2k
    最大正数 尾数正数最大+(1-2-n) 阶码最大2k-1
    在这里插入图片描述

    IEEE-754

    C语言就是用IEEE-754
    在这里插入图片描述
    单精度 32bit
    <-high s 数符(1bit); e 阶码(8bit)f 尾数(23bit) low<-

    f(无符号原码 说是原码也不准确 原码1.xxx表示负数 而在这里1.xxx表示正数)f>0 f=1.xxx; 所以将1舍去 f只记录xxx

    e(特殊移码)阶码的偏移量为+127 我们先前讲的移码偏移量为+128
    补码转换IEEE-754移码:最高位取反,然后减去1;
    为什么为127?没看懂
    在这里插入图片描述
    然后把e = 0(表示0/次规格化数) e=255(正负无穷大/NaN) 都挖掉了,所以阶码范围-126~127

    s=0 为正数;s=1 为小数
    在这里插入图片描述

    范围

    阶码范围 -126 ~+127
    尾数范围(1+0)~(1+1-2-23)
    在这里插入图片描述
    正数范围1.2e-38~3.4e38 小数和整数的量级是接近的

    大端法 小端法

    小端法:小的数字存在字节小的地方
    在这里插入图片描述
    存放的是01 23 45 67
    小端法每次看到都有些怪异 因为一个字节可以存放两个十六进制数。
    Linux Windows均是小端法

    展开全文
  • 定点数浮点数

    2020-01-23 19:29:59
    定点数浮点数 定点数的表示方式 定点数:小数点固定在某个位置的数 纯小数 纯整数 乘以比列因子来满足定点数保存格式 浮点数的表示方式 ...
  • 定点数浮点数

    2012-05-11 11:46:12
    定点数浮点数
  • 定点数浮点数verilog

    2020-08-02 18:09:30
    本文目的是记录学习《数字信号处理的FPGA实现》过程中,用verilog语言实现简单的定点数浮点数转换的经历。
  • 定点数浮点数区别

    千次阅读 2020-01-03 14:56:35
    定点数浮点数区别 定点数:计算机中采用的一种数的表示方法,参与运算的数的小数点位置固定不变; 浮点数:计算机中用于近似表示任意某个实数,这个实数由一个整数或定点数(尾数)乘以某个基数(计算机中通常...
  • 与之相对,那定点数就是小数点位置固定不变的数了。 浮点数一般由三部分组成,其分别为【符号位S】、【阶码E】、【尾数M】,此外还有一个重要的组成部分为【基数R】,不过一般基数固定为2,因此我们不做过多讨论。 ...
  • 定点数浮点数的意思是,小数点的位置是固定的还是浮动的。一般来说定点格式能表示的数值范围有限,单要求处理的硬件简单一些。浮点格式能表示的数的范围很大,但要求处理的硬件比较复杂一些。 定点数: 所谓定点...
  • GPU中定点数浮点数

    千次阅读 2010-08-04 21:26:00
    定点数浮点数转换最常见的就是sample texture。 像rgb8的tex sample出来的颜色,load到register中是tex_value/255.0f。 比如一个纯灰的贴图,进来就是127.0f/255.0f,是0.498xxxx这么个数。  ...
  • 定点数浮点数的相互转换

    万次阅读 2015-02-10 17:12:45
    而我的运算过程都是用的浮点数,通过一系列计算后,还需要将计算的结果以定点数的形式写入寄存器,所以首先需要写一个定点数浮点数相互转换的函数。  首先明确一下定点数浮点数的概念: 定点数  定点数...
  • 文章目录1 前言2 什么是原码、反码和补码2.1 原码表示法2.2 反码表示法2.3 ...定点数浮点数的概念4.1 定点数4.1.1 定点数存储格式(Q格式)4.1.2 定点数浮点数之间的转换4.1.2.1 浮点数定点数4.1.2.2 定点数到...
  • 定点数浮点数表示

    千次阅读 2020-02-26 19:36:52
    定点数与浮点数据表示 IEEE754 与十进制转换

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,267
精华内容 6,906
关键字:

定点数,浮点数