第一章 计算机系统基础知识(二)— 数据表示之数的表示

1.原码,反码,补码,移码的表示

1-1 原码表示法

数值X的原码记为 [ X ] 原 [X]{_原} [X](x为十进制),如果机器字长为n(采用n个二进制位表示数据),则原码的定义如下:
在这里插入图片描述
例1.1 若机器字长n=8,求+127,-127和+0.5,-0.5的原码表示:

  • +127, 属于 纯整数正数:
    + 127 = [ + 127 ] 原 = 127 10 = 01111111 ( 2 ) ; 范 围 : 0 < = + 127 < = 127 ( 2 7 − 1 ) +127=[+127]{_原}=127{_{10}}=0 1111111{_{(2)}};范围:0<=+127<=127(2^{7}-1) +127=[+127]=12710=01111111(2):0<=+127<=127(271)
  • -127, 属于 纯整数负数:
    − 127 = [ − 127 ] 原 = 256 10 = 11111111 ( 2 ) ; 范 围 : − 127 ( 2 7 − 1 ) < = − 127 < = 0 -127=[-127]{_原}=256{_{10}}=1 1111111{_{(2)}};范围:-127(2^{7}-1)<=-127<=0 127=[127]=25610=11111111(2):127(271)<=127<=0
  • +0.5, 属于 纯小数正数:
    + 0.5 = [ + 0.5 ] 原 = 0.5 10 = 0.1000000 ( 2 ) ; 范 围 : 0 < = + 0.5 < 1 +0.5=[+0.5]{_原}=0.5{_{10}}=0 .1000000{_{(2)}};范围:0<=+0.5<1 +0.5=[+0.5]=0.510=0.1000000(2):0<=+0.5<1
  • -0.5, 属于 纯小数负数:
    − 0.5 = [ − 0.5 ] 原 = 1.5 10 = 1.1000000 ( 2 ) ; 范 围 : − 1 < = − 0.5 < = 0 -0.5=[-0.5]{_原}=1.5{_{10}}=1 .1000000{_{(2)}};范围:-1<=-0.5<=0 0.5=[0.5]=1.510=1.1000000(2):1<=0.5<=0

在原码表示法中,最高位是符号位,0代表正号,1代表负号,其余的n-1位表示数值的绝对值。
数值0的原码有两种表示形式: [ + 0 ] 原 = 00000000 ; [ − 0 ] 原 = 10000000 ; [+0]{_原}=0 0000000;[-0]{_原}=1 0000000; [+0]=00000000[0]=10000000

1-2 反码表示法

数值X的反码记为 [ X ] 反 [X]{_反} [X](x为十进制),如果机器字长为n(采用n个二进制位表示数据),则反码的定义如下:
在这里插入图片描述
例1.2 若机器字长n=8,求+127,-127和+0.5,-0.5的反码表示:

  • +127, 属于 纯整数正数(和原码相同):
    [ + 127 ] 反 = 01111111 ( 2 ) ; 范 围 : 0 < = + 127 < = 127 ( 2 7 − 1 ) [+127]{_反}=0 1111111{_{(2)}};范围:0<=+127<=127(2^{7}-1) [+127]=01111111(2):0<=+127<=127(271)
  • -127, 属于 纯整数负数(按原码的绝对值求反):
    [ − 127 ] 反 = 10000000 ( 2 ) ; 范 围 : − 127 ( 2 7 − 1 ) < = − 127 < = 0 [-127]{_反}=1 0000000{_{(2)}};范围:-127(2^{7}-1)<=-127<=0 [127]=10000000(2):127(271)<=127<=0
  • +0.5, 属于 纯小数正数(和原码相同):
    [ + 0.5 ] 反 = 0.1000000 ( 2 ) ; 范 围 : 0 < = + 0.5 < 1 [+0.5]{_反}=0 .1000000{_{(2)}};范围:0<=+0.5<1 [+0.5]=0.1000000(2):0<=+0.5<1
  • -0.5, 属于 纯小数负数(按原码的绝对值求反):
    [ − 0.5 ] 反 = 1.0111111 ( 2 ) ; 范 围 : − 1 < − 0.5 < = 0 [-0.5]{_反}=1 .0111111{_{(2)}}; 范围:-1<-0.5<=0 [0.5]=1.0111111(2):1<0.5<=0

在反码表示法中,最高位是符号位,0代表正号,1代表负号,正数的反码与原码相同,负数的反码则是其绝对值按位求反
数值0的反码有两种表示形式: [ + 0 ] 反 = 00000000 ; [ − 0 ] 反 = 11111111 ; [+0]{_反}=0 0000000;[-0]{_反}=1 1111111; [+0]=00000000[0]=11111111

1-3 补码表示法

数值X的补码记为 [ X ] 补 [X]{_补} [X](x为十进制),如果机器字长为n(采用n个二进制位表示数据),则补码的定义如下:
在这里插入图片描述
例1.2 若机器字长n=8,求+127,-127和+0.5,-0.5的补码表示:

  • +127, 属于 纯整数正数(和原码、反码相同):
    [ + 127 ] 反 = 01111111 ( 2 ) ; 范 围 : 0 < = + 127 < = 127 ( 2 7 − 1 ) [+127]{_反}=0 1111111{_{(2)}};范围:0<=+127<=127(2^{7}-1) [+127]=01111111(2):0<=+127<=127(271)
  • -127, 属于 纯整数负数(负数的补码则等于其反码的末尾加1):
    [ − 127 ] 反 = 10000001 ( 2 ) ; 范 围 : − 128 ( 2 7 − 1 ) < = − 127 < = 0 [-127]{_反}=1 0000001{_{(2)}};范围:-128(2^{7}-1)<=-127<=0 [127]=10000001(2):128(271)<=127<=0
  • +0.5, 属于 纯小数正数(和原码、反码相同):
    [ + 0.5 ] 反 = 0.1000000 ( 2 ) ; 范 围 : 0 < = + 0.5 < 1 [+0.5]{_反}=0 .1000000{_{(2)}};范围:0<=+0.5<1 [+0.5]=0.1000000(2):0<=+0.5<1
  • -0.5, 属于 纯小数负数(负数的补码则等于其反码的末尾加1):
    [ − 0.5 ] 反 = 1.1000000 ( 2 ) ; 范 围 : − 1 < = − 0.5 < 0 [-0.5]{_反}=1 .1000000{_{(2)}}; 范围:-1<=-0.5<0 [0.5]=1.1000000(2):1<=0.5<0
    在补码表示法中,最高位是符号位,0代表正号,1代表负号,正数的补码与其原码和反码相同,负数的补码则等于其反码的末尾加1
    在补码表示中,0有唯一的编码:: [ + 0 ] 补 = 00000000 ; [ − 0 ] 补 = 00000000 ; [+0]{_补}=0 0000000;[-0]{_补}=0 0000000; [+0]=00000000[0]=00000000

1-4 移码表示法

移码表示法是在数X上增加一个偏移量来定义的,常用于表示浮点数中的阶码。如果机器字长为n(采用n个二进制位表示数据),规定偏移量为 2 n − 1 2^{n-1} 2n1,则移码的定义如下:

  • 若X是纯整数, [ X ] 移 = 2 n − 1 + X [X]{_移}=2^{n-1}+X [X]=2n1+X ,取值范围: − 2 n − 1 < = X < 2 n − 1 -2^{n-1}<=X<2^{n-1} 2n1<=X<2n1
  • 若X是纯小数, [ X ] 移 = 1 + X [X]{_移}=1+X [X]=1+X ,取值范围: − 1 < = X < 1 -1<=X<1 1<=X<1

例1.2 若机器字长n=8,求+127,-127和+0.5,-0.5的移码表示:

  • +127, 属于 纯整数(补码的符号位取反):
    [ + 127 ] 反 = 11111111 ( 2 ) ; 范 围 : − 127 ( 2 7 − 1 ) < = + 127 < 127 ( 2 7 − 1 ) [+127]{_反}=1 1111111{_{(2)}};范围:-127(2^{7}-1)<=+127<127(2^{7}-1) [+127]=11111111(2):127(271)<=+127<127(271)
  • +0.5, 属于 纯小数(补码的符号位取反):
    [ + 0.5 ] 反 = 1.1000000 ( 2 ) ; 范 围 : − 1 < = + 0.5 < 1 [+0.5]{_反}=1 .1000000{_{(2)}};范围:-1<=+0.5<1 [+0.5]=1.1000000(2):1<=+0.5<1

在偏移 2 n − 1 2^{n-1} 2n1的情况下,只要将补码的符号位取反便可获取相应的移码表示。在移码表示中,0有唯一的编码: [ + 0 ] 移 = 10000000 ; [ − 0 ] 移 = 10000000 ; [+0]{_移}=1 0000000;[-0]{_移}=1 0000000; [+0]=10000000[0]=10000000

2. 定点数

  • 定义:定点数,就是小数点位置固定不变的数。分为定点小数(纯小数)和定点整数(纯整数)。
  • 码制表示下带符号数的范围。
    机器字长为n。
    **在这里插入图片描述**

3. 浮点数

浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度则由尾数决定。
规格化浮点数:规格化就是将尾数的绝对值限定在区间[0.5,1]。

  • 浮点数的运算
    N = M ∗ R e N=M*R^{e} N=MRe
    M为尾数,e为指数,R为基数

  • 表示格式:

阶符阶码数符尾数

例如:

十进制中 83.125 相当于: 1 0 3 ∗ 0.083125 10^3*0.083125 1030.083125
二进制中 1011.10101 相当于: 2 4 ∗ 0.101110101 2^4*0.101110101 240.101110101

  • 浮点数表示数值范围
    如果浮点数阶码(包括一位阶符)用R位的移码表示, 尾数(包括一位阶符)用M的补码表示,则这种浮点数所能表示的数值范围:

    • 最大正数:
      + ( 1 − 2 − M + 1 ) ∗ 2 2 R − 1 − 1 +(1-2^{-M+1})*2^{2^{R-1}-1} +(12M+1)22R11
    • 最小负数:
      − 1 ∗ 2 2 R − 1 − 1 -1*2^{2^{R-1}-1} 122R11
  • 工业标准IEEE 754:
    ( − 1 ) S 2 E ( b 0 b 1 b 2 b 3 ⋅ ⋅ ⋅ b p − 1 ) (-1)^{S}2^{E}(b_0b_1b_2b_3···b_{p-1}) (1)S2E(b0b1b2b3bp1)
    其中,(-1)^{S}为该浮点数的数符,当S为0时表示正数,为1时表示负数;E为指数(阶码),用移码表示; b 0 b 1 b 2 b 3 ⋅ ⋅ ⋅ b p − 1 b_0b_1b_2b_3···b_{p-1} b0b1b2b3bp1为尾数,其长度为P位用原码表示。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值