计算机组成原理——数据的表示与运算-数制与编码(课程笔记)

说明

  1. 博客作为笔记备份,不定时更新
  2. 参考内容为《计算机组成原理(第3版)》唐朔飞 高等教育出版社;王道考研《计算机组成原理考研复习指导2023》
  3. 文中的例题摘自王道考研《计算机组成原理考研复习指导2023》,大多是我个人认为较为典型的题目以及错题的部分整理

数制与编码

1. 概述

计算机内信息采用二进制表示的原因

  • 二进制只有两种状态,使用有两个稳定状态的物理器件就可以表示二进制数的每一位,制造成本低
  • 二进制位1和0正好与逻辑值“真”和“假”对应,为计算机实现逻辑运算和程序中的逻辑判断提供了便利条件
  • 二进制的编码和运算规则都很简单,通过逻辑门电路能方便的实现算术运算

进制转换

  • 在计算机中,整数可以连续表示,小数是离散的,所以并不是每一个十进制小数都可以准确的用二进制表示,但任意一个二进制小数都可以用十进制小数表示

真值与机器数

  • 带有“+”或“-”符号的数称为真值,真值是机器数所代表的实际值
  • 把符号数据字化的数称为机器数,常用的有原码、补码、反码表示法

2. 定点数的编码表示

  • 现代计算机通常用定点补码整数表示整数,用定点原码小数表示浮点数的尾数部分,用移码表示浮点数的阶码部分

机器数的定点表示

  • 定点小数
    在这里插入图片描述

    • 定点小数是纯小数,约定小数点位置在符号位之后、有效数值部分最高位之前
  • 定点整数
    在这里插入图片描述

    • 定点整数是纯整数,约定小数点位置在有效数值部分最低位之后
  • 注:以下x均表示真值

原码

  • 用机器数的最高位表示符号位,其余各位表示数的绝对值
  • ★纯小数原码
    [ x ] 原 = { x 1 > x ≥ 0 1 − x = 1 + ∣ x ∣ 0 ≥ x > − 1 [x]_{原} = \begin{cases} x & 1\gt x\ge0 \\ 1-x=1+|x| & 0\ge x \gt -1 \end{cases} [x]={x1x=1+x1>x00x>1
    • 若字长为 n + 1 n+1 n+1,则原码小数的表示范围: − ( 1 − 2 − n ) ≤ x ≤ 1 − 2 − n -(1-2^{-n})\le x \le 1-2^{-n} (12n)x12n(关于原点对称)
  • 纯整数原码
    [ x ] 原 = { 0 , x 2 n > x ≥ 0 2 n − x = 2 n + ∣ x ∣ 0 ≥ x > − 2 n [x]_{原}= \begin{cases} 0,x & 2^n\gt x\ge 0 \\ 2^n-x=2^n+|x|& 0\ge x\gt -2^n \end{cases} [x]={0,x2nx=2n+x2n>x00x>2n
    • 若字长为 n + 1 n+1 n+1,则原码整数的表示范围: − ( 2 n − 1 ) ≤ x ≤ 2 n − 1 -(2^n-1)\le x\le 2^n-1 (2n1)x2n1(关于原点对称)
  • 真值零的原码表示有正零和负零: [ + 0 ] 原 = 00000 和 [ − 0 ] 原 = 10000 [+0]_原=00000和[-0]_原=10000 [+0]=00000[0]=10000
  • 原码表示的优点:与真值的对应关系简单、直观,与真值的转换简单,用原码实现乘除运算比较简便
  • 缺点:0的表示不唯一,且原码加减法运算比较复杂

补码

  • 纯小数补码
    [ x ] 补 = { x 1 > x ≥ n 2 + x = 2 − ∣ x ∣ 0 > x ≥ − 1     m o d   2 [x]_补= \begin{cases} x& 1\gt x \ge n \\ 2+x=2-|x|& 0\gt x\ge -1 \end{cases} \ \ \ mod \ 2 [x]={x2+x=2x1>xn0>x1   mod 2
    • 若字长为 n + 1 n+1 n+1,则补码的表示范围: − 1 ≤ x ≤ 1 − 2 − n -1\le x\le 1-2^{-n} 1x12n(比原码多表示-1)
  • ★纯整数补码
    [ x ] 补 = { 0 , x 2 n > x ≥ 0 2 n + 1 + x = 2 n + 1 − ∣ x ∣ 0 ≥ x ≥ − 2 n     m o d   2 n + 1 [x]_补= \begin{cases} 0,x& 2^n\gt x\ge 0\\ 2^{n+1}+x=2^{n+1}-|x|& 0\ge x\ge -2^n \end{cases} \ \ \ mod \ 2^{n+1} [x]={0,x2n+1+x=2n+1x2n>x00x2n   mod 2n+1
    • 若字长为 n + 1 n+1 n+1,则补码的表示范围: − 2 n ≤ x ≤ 2 n − 1 -2^n\le x\le 2^n-1 2nx2n1(比原码多表示 − 2 n -2^n 2n
  • 零的补码表示唯一,即 [ + 0 ] 补 = [ − 0 ] 补 = 0.0000 [+0]_{补}=[-0]_{补}=0.0000 [+0]=[0]=0.0000
  • 小数补码比原码多表示一个“-1”,整数补码比原码多表示一个“ − 2 n -2^n 2n
  • 变形补码
    • 又称模4补码,双符号位的补码小数
      [ x ] 补 = { x 1 > x ≥ 0 4 + x = 4 − ∣ x ∣ 0 > x ≥ − 1     m o d   4 [x]_{补}=\begin{cases} x& 1\gt x \ge 0\\ 4+x=4-|x|& 0\gt x\ge -1 \end{cases} \ \ \ mod \ 4 [x]={x4+x=4x1>x00>x1   mod 4
    • 模4补码双符号位00表示正,11表示负,用在完成算术运算的ALU部件中
    • [ x ] 补 [x]_{补} [x]的符号位和数值位一起右移并保持原符号位的值不变,可实现除法功能
  • 补码与真值的转换
    • 真值 → 转换 \stackrel{转换}{\rightarrow} 转换补码
      • 对于正数,和原码方式一样
      • 对于负数,符号位取1,其余各位由真值“各位取反,末位加1”
    • 补码 → 转换 \stackrel{转换}{\rightarrow} 转换真值
      • 对于正数(符号位为0),与原码方式一眼
      • 对于负数(符号位为1),真值的符号为负,数值部分的各位由补码“各位取反,末位加1”

移码

  • 移码常用来表示浮点数的阶码,它只能表示整数
  • 移码就是在真值X上加上一个常数(偏置值),通常这个值取 2 n 2^n 2n,相当于X在数轴上向正方向偏移了若干单位
    • [ x ] 移 = 2 n + x ( 2 n > x ≥ − 2 n , 机器字长为 n + 1 ) [x]_{移}=2^n+x(2^n\gt x \ge -2^n,机器字长为n+1) [x]=2n+x(2n>x2n,机器字长为n+1)
  • 移码的特点
    • 移码中零的表示唯一, [ + 0 ] 移 = 2 n + 0 = [ − 0 ] 移 = 2 n − 0 = 100 ⋅ ⋅ ⋅ 000 ( n 个 0 ) [+0]_{移}=2^n+0=[-0]_{移}=2^n-0=100···000(n个0) [+0]=2n+0=[0]=2n0=100⋅⋅⋅000n0
    • 一个真值的移码和补码仅相差一个符号位 [ x ] 补 [x]_{补} [x]的符号位取反即得 [ x ] 移 [x]_{移} [x](1表示正,0表示负,这与其他机器数的符号位取值正好相反),反之亦然
    • 移码全0时,对应真值的最小值 − 2 n -2^n 2n;移码全1时,对应真值的最大值 2 n − 1 2^n-1 2n1
    • 移码保持了数据原有的大小顺序,移码大真值就大,移码小真值就小

编码总结

比较内容原码补码反码移码
对称在数轴上对称不对称在数轴上对称不对称
零的表示不唯一,有+0和-0唯一不唯一,有+0和-0唯一

3. 整数的表示

无符号整数的表示

  • 默认数的符号为正
  • 由于无符号数省略了一位符号位,因此在字长相同的情况下,它能表示的最大数比有符号整数能表示的大
  • 比如,8位无符号整数的表示范围0~ 2 8 − 1 2^8-1 281,即最大数为255, 8位带符号整数的最大数为127

有符号整数的表示

  • 计算机中带符号整数都用补码表示,n位带符号整数的表示范围是 − 2 n − 1 -2^{n-1} 2n1~ 2 n − 1 − 1 2^{n-1}-1 2n11

4. 例题

更新文档

更新日期更新内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值