当前位置: 首页 > news >正文

【计算机组成原理】考研真题攻克与重点知识点剖析 - 第 2 篇:数据的表示和运算

前言

  • 本文基础知识部分来自于b站:分享笔记的好人儿的思维导图与王道考研课程,感谢大佬的开源精神,习题来自老师划的重点以及考研真题。
  • 此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析,本人技术有限,最终数据清洗结果不够理想,相关CSDN文章便没有发出。
  • 这里我将按章节顺序,围绕考研真题展开计算机组成原理总共7章的知识,边学习边整理数据。
  • 第一章链接:【计算机组成原理】考研真题攻克与重点知识点剖析 - 第 1 篇:计算机系统概述

请注意,本文中的部分内容来自网络搜集和个人实践,如有任何错误,请随时向我们提出批评和指正。本文仅供学习和交流使用,不涉及任何商业目的。如果因本文内容引发版权或侵权问题,请通过私信告知我们,我们将立即予以删除。

文章目录

  • 前言
  • 数据的表示
    • 数制与编码
    • 真值和机器数定义
    • 以上知识思维导图
    • 可跳过
      • BCD码
      • 无符号整数运算
      • 有符号整数运算
        • 原码表示
        • 源码缺点
        • 原码→反码→补码的转换(机算)
        • 原码、补码快速转换技巧(手算)
        • 补码的加法运算(例1)
        • 补码的加法运算(例2)
        • 移码
        • 练习
    • 以上知识总结
    • 数据存储时的字节排列
    • 机器数表示方法
      • 定点数
        • 定点数的表示
        • 定点小数vs定点整数
        • 定点数的局限性
      • 浮点数
        • 浮点数的表示(约定小数点位置)
        • 浮点数尾数的规格化
    • 浮点数的表示思维导图
        • IEEE 754标准
  • 数据的运算
    • 布尔代数和基本逻辑电路
    • 加法器(所有算数运算部件都基于加法器)
      • 加法器原理
      • 补码加减运算器(利用加法器实现)
        • **计算有符号数**
        • **计算无符号数**
      • 标志位生成
        • (OF)有符号数补码加减运算器溢出判断
        • (CF)无符号数补码加减运算器溢出判断
      • 溢出判断
      • 符号扩展
    • 加减运算思维导图
    • 加法器设计与实现
      • 一位加法器(全加器)
      • 串行加法器
      • 并行加法器(单级/多级)
      • n位带标志加法器
      • 算数逻辑单元(ALU)
    • C语言中各类运算
    • 定点数的运算
      • 定点数的加减运算
        • 可通过二路选择器+带标志加法器实现加/减运算器
        • 原码定点数加减法运算(符号不参与运算)
        • 补码定点数加减法运算(符号参与运算)
        • 补码溢出的判定方法
      • 定点数的乘除运算
        • 整数的乘运算
        • 整数的除法运算
    • 浮点数的加减运算
      • 不同类型转换
    • 浮点数的运算思维导图
    • 考研真题
    • 408 - 2023
      • 13. 计算short型变量的机器数
      • **14. 计算IEEE 754 单精度浮点数的值**
      • 16. 溢出和借位标志问题
    • 408 - 2022
      • 13. 32位补码整数范围
      • 14. IEEE754单精度浮点数表示
    • 408 - 2021
      • 13. 带符号整数的补码表示与大小比较
      • 14. IEEE754浮点格式表示精度问题
    • (未完待续,逐张试卷分析中)

数据的表示

数制与编码

  • 真值与机器数

    • 机器数:用0和1编码的计算机内部的0/1序列

    • 真值:机器数代表的实际值,现实中带正负号的数,X

  • 数值数据表示的三要素(要确定一个数值数据的值必须先确定这三个要素)

    • 进位计数制

      • 十进制(后缀D)、二进制(后缀B)、十六进制(后缀H,或前缀0x表示)、八进制(后缀O)
    • 定/浮点表示

      • 浮点整数、定点小数、浮点数(解决小数点问题)
    • 二进制编码

      • 原码、补码、反码、移码(解决正负号问题)
  • 十进制数与R进制数之间的转换

    • R进制到十进制(按“权”展开)在这里插入图片描述
      在这里插入图片描述

    • 十进制到二进制,再将二进制转十六(四位一组)或八进制(三位一组)
      在这里插入图片描述
      在这里插入图片描述

    • 二进制<–>八进制、十六进制

在这里插入图片描述

  • 各种进制的常见书写方式
    在这里插入图片描述

真值和机器数定义

在这里插入图片描述

以上知识思维导图

在这里插入图片描述

可跳过

BCD码

在这里插入图片描述

无符号整数运算

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

有符号整数运算

原码表示

在这里插入图片描述

源码缺点

在这里插入图片描述

原码→反码→补码的转换(机算)

在这里插入图片描述

原码、补码快速转换技巧(手算)

在这里插入图片描述

在这里插入图片描述

补码的加法运算(例1)

19=16+2+1
0001 0011
在这里插入图片描述

补码的加法运算(例2)

在这里插入图片描述

移码

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

练习

在这里插入图片描述

以上知识总结

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

数据存储时的字节排列

  • 大端方式:从最高有效字节到最低有效字节的顺序存储数据(从左到右,正常思维)

  • 小端方式:从最低有效字节到最高有效字节的顺序存储数据(从右到左,便于机器)
    在这里插入图片描述

  • 边界对齐问题:存储数据不满字长,填充空白,虽然浪费空间,但提高效率(若数据不对齐可能额外存取一次)

  • 在这里插入图片描述

机器数表示方法

定点数

在这里插入图片描述
定点::小数点位置固定

定点数的表示
  • 原码

    • 最高位为符号位,数值部分不变在这里插入图片描述
  • 补码

    • 定义:[X]补 = 2^n + X(-2^n <= X < 2^n,mod 2^n)

    • 理解:为了机器数加减运算的统一。
      实际上是模运算,一个负数的补码等于模减该负数的绝对值,即时钟从10点到6点,可以倒拨4格:10-4=6;也可以顺拨8格,10+8=18=6

  • 反码

    • 原码与补码相互转化的过渡
  • 移码

    • 数值加一个偏置常数,通常在真值X上加2^n(便于浮点数加减运算时对阶,阶数有正有负,统一加一个常数让阶数都为正方便比较)
  • 不同机器数之间的转换关系
    在这里插入图片描述

  • 范围与真值0

    • 定点整数

      • 原码

        • 范围:- (2^n - 1) <= x <= 2^n - 1

          • 最大:0,111…111

            • 最小:1,111…111

              • 真值零: 0,000…000,1,000…000
      • 反码

        • 范围:- (2^n - 1) <= x <= 2^n - 1

          • 最大:0,111…111

            • 最小:1,000…000

              • 真值零: 0,000…000,1,111…111
      • 补码

        • 范围:- 2^n <= x <= 2^n - 1

          • 最大:0,111…111

            • 最小:1,000…000

              • 真值零: 0,000…000
    • 定点小数

      • 原码

        • 范围:- (1 - 2^-n) <= x <= 1 - 2^-n

          • 最大:0,111…111

            • 最小:1,111…111

              • 真值零: 0,000…000,1,000…000
      • 反码

        • 范围:- (1 - 2^-n) <= x <= 1 - 2^-n

          • 最大:0,111…111

            • 最小:1,000…000

              • 真值零: 0,000…000,1,111…111
      • 补码

        • 范围:-1 <= x <= 1 - 2^-n

          • 最大:0,111…111

            • 最小:1,000…000

              • 真值零: 0,000…000
  • 有符号数与无符号数

    • 有符号数:最高位的0/1表示正/负

    • 无符号数:整个机器字长全部二进制位均为数值位,无符号位

    • 同时有无符号数和带符号数,在C编译器中隐含将带符号整数强制转换为无符号数

定点小数vs定点整数

(+/-)0/1 000 0001.
(+/-)0/1. 000 0001在这里插入图片描述

定点数的局限性

在这里插入图片描述

浮点数

在这里插入图片描述

浮点数的表示(约定小数点位置)
  • 一般格式

    • 浮点数真值格式:N = r^E × M(r阶码的底,E阶码用移码表示,M尾数,S数符)在这里插入图片描述

    • 表示范围(原码对称,故表示范围关于原点对称)在这里插入图片描述

    • 浮点数范围比定点数大,但个数不变,故数更稀疏且不均匀

  • 规格化浮点数

    • 规格化数形式:+/-1.M × r^E

      • 为了表示更多有效数字,规定规格化数的小数点前为1
    • 基数2:原码规格化最高位一定是1,补码规格化数的尾数最高位一定与尾数符号相反(基数4原码最高两位不全为0,基数8原码最高三位不全为0)

  • IEEE754标准

    • +/-1.M × 2^E(S数符,E阶码用移码表示全0全1特殊表示,M(Significand)尾数用原码表示,隐含尾数最高数位)在这里插入图片描述

    • 短浮点数

      • 数符1+阶码8+尾数23=总位数32(偏置值127)

        • 范围:1 × 2^(1-127) ---------- 1.111…111 × 2^(254-127)
    • 长浮点数

      • 数符1+阶码11+尾数52=总位数64(偏置值1023)

        • 范围:1 × 2^(1-1023) ---------- 1.111…111 × 2^(2046-1023)
    • 特殊数的表示

      • 阶码全0,尾数M=0,真值X=0+(0-)

      • 阶码全0,尾数M!=0,非规格化小数

      • 阶码全1,尾数M=0,真值X=+∞(-无穷)

      • 阶码全1,尾数M!=0,非数值NaN

在这里插入图片描述

浮点数尾数的规格化

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

浮点数的表示思维导图

在这里插入图片描述

IEEE 754标准

偏置值-1
在这里插入图片描述

  • 关于-1000 0000+0111 1111 = 1111 1111

2^8=1 0000 0000 任何运算结果在mod2的8次方后,都只会保留最低的八位,
所以在这里我们可以 将 0111 1111+1 0000 0000=1 0111 1111,
这样就使 被减数 比 减数 大 1 0111 1111-1000 0000 = 1111 1111

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

例2
在这里插入图片描述
例3
在这里插入图片描述

数据的运算

布尔代数和基本逻辑电路

  • 基本逻辑运算:与或非,任何逻辑表达式可写成三种基本运算的逻辑组合在这里插入图片描述

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

在这里插入图片描述

  • 组合逻辑电路:没有存储功能,输出仅依赖于当前输入

  • 具有存储功能,其输出不仅依赖于当前输入,还依赖于存储单元当前状态

  • 组合逻辑部件(功能部件,利用基本逻辑门电路构成):译码器、编码器、多路选择器、加法器

加法器(所有算数运算部件都基于加法器)

加法器原理

在这里插入图片描述

补码加减运算器(利用加法器实现)

计算有符号数

sub=0
在这里插入图片描述
sub=1
在这里插入图片描述

计算无符号数

电路相同,判断溢出方式不同
sub=0
在这里插入图片描述
sub=1
在这里插入图片描述

标志位生成

在这里插入图片描述

在这里插入图片描述

(OF)有符号数补码加减运算器溢出判断

在这里插入图片描述

(CF)无符号数补码加减运算器溢出判断

在这里插入图片描述

溢出判断

在这里插入图片描述
方法一在这里插入图片描述
方法二
在这里插入图片描述
方法三
在这里插入图片描述

符号扩展

在这里插入图片描述

加减运算思维导图

在这里插入图片描述

加法器设计与实现

一位加法器(全加器)

  • 输入:加数A和B,低位进位Cin

    • 输出:和:F = A ⊕ B ⊕ Cin
      高位进位:Cout=A·B + A·Cin + B·Cin在这里插入图片描述

在这里插入图片描述

串行加法器

  • n个全加器相连,进位触发器用来寄存进位信号,每一级进位依赖于前一级进位,进位信号逐级形成 Cout=A·B + (A⊕B)·Cin
    在这里插入图片描述

并行加法器(单级/多级)

  • 各级进位信号同时形成,又称先行进位,各进位之间无等待,相互独立并同时产生

    • 辅助函数:Gi = Ai·Bi Pi = Ai + Bi
      全加逻辑方程:Si = Pi⊕Ci Ci+1 = Gi + Pi·Ci

    • C1 = G0 + P0·C0
      C2 = G1 + P1·C1 = G1 + P1·G0 + P1·P0·C0
      C3 = G2 + P2·C2 = G2 + P2·G1 + P2·P1·G0 + P2·P1·P0·C0
      由上式可知:各进位之间无等待,相互独立并同时产生
      在这里插入图片描述
      优化
      在这里插入图片描述

在这里插入图片描述

n位带标志加法器

在这里插入图片描述

  • 溢出标志OF(仅有符号数加减法有意义)
    • 含义:有符号数的加减法是否发生了溢出
    • 计算:OF=最高位产生的进位⊕次高位产生的进位
  • 符号标志SF(仅有符号数加减法有意义)
    • 含义:有符号数加减运算结果的正负性
    • SF=最高位的本位和
  • 零标志ZF
    • 含义:运算结果是否为0
    • 计算:n 位全0,ZF=1
  • 进/借位标志CF(仅无符号加减法有意义)
    • 含义:加法时为进位标志,减法时为借位标志
    • 计算:CF=最高位进位⊕sub(减法sub=1,加法sub=0)

算数逻辑单元(ALU)

  • 利用二路选择器+带标志加法器构造加/减运算器在这里插入图片描述
  • 加/减运算器基础上加寄存器、移位器、控制逻辑可实现ALU在这里插入图片描述
    - 算数运算:取负、移位、加减乘除、扩展
    - 逻辑运算:与或非

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

  • B3~B0和A3~A0是两个操作数,

  • F3~F0为输出结果。

  • C-l表示最低位的外来进位,

  • Cn+4是7418l向高位的进位;

  • P、G可供先行进位使用。

  • M用于区别算术运算还是逻辑运算;

  • S3~S0的不同取值可实现不同的运算。

  • 输入B3~B0和A3~A0两个机器字长为4bit的信息

  • 输出F3~F0机器字长为4bit的计算结果

  • F3~F0存入寄存器X,寄存器的位数要与机器字长保持一致,所以寄存器的位数=机器字长

  • S3~S0有4bit的信息,对应2^4=16种算数运算和逻辑运算
    知识回顾
    在这里插入图片描述

C语言中各类运算

  • 算术运算:无符号数、带符号的、浮点数的加减乘除运算

  • 位运算:与、或、取反、异或

  • 逻辑运算:&&、||、!

  • 移位运算(王道分原码补码反码讨论,此处是C语言)

    • 逻辑左/右移(无符号数)

      • 高(低)位移出,低(高)位补0(若高位移出1,则左移发生溢出)
    • 算数左/右移(带符号数)

      • 左移:高位移出,低位补0(若移出位不等于新的符号位,则溢出)

      • 右移:低位移出,高位补符(可能数据丢失)

    • 循环移位

      • 带进位标志位的循环移位

      • 不带进位标志位的循环移位,移出的位需要同时进入进位寄存器

  • 位扩展和位截断

    • 扩展

      • 无符号数:0扩展(前面补0)

      • 带符号数:符号扩展(前面补符)

    • 截断

      • 强行将高位丢弃,故可能发生溢出

定点数的运算

定点数的加减运算

可通过二路选择器+带标志加法器实现加/减运算器
  • 计算机中所有运算都基于加法器实现

  • 加法器不知道所运算的是带符号数还是无符号数

  • 加法器不判定对错,总是取低n位为结果,并生成标志信息

  • 无符号加法溢出条件:CF=1

    • 有符号加溢出条件:OF=1
  • 无符号减法溢出:差为负数,即借位CF=1

    • 其他溢出判定方法见下方
  • 减法做比较大小

    • 无符号数大于:CF=0

    • 有符号数大于:OF=SF

原码定点数加减法运算(符号不参与运算)
  • 加法准则

    • 符号相同:绝对值相加,符号不变

    • 符号不同:绝对值大的减去绝对值小的,符号取绝对值大的

  • 减法准则

    • 减数符号取反,做原码加法运算
补码定点数加减法运算(符号参与运算)
  • 公式:[A+B]补=[A]补 + [B]补(MOD 2^n) [A-B]补=[A]补 + [-B]补(MOD 2^n)
补码溢出的判定方法
  • 一位符号位

    • 参与运算的两个数符号相同,结果符号变化,则溢出

    • 最高位进位与次高位进位不同,则溢出

  • 双符号位(存储仅一符号位,进入ALU后两位符号位)

    • 在乘除等运算中,为了不丢弃中间的溢出结果,多位符号位可以保留符号位和溢出的数值位,保留正确的中间结果

    • 00正数,无溢出

    • 01正溢出(符号位不同,最高位为真正符号)

    • 10负溢出(符号位不同,最高位为真正符号)

    • 11负数,无溢出

定点数的乘除运算

整数的乘运算
  • 高级语言中两个n位整数相乘得到的结果也是n位整数,即取2n位乘积中的低n位

  • 溢出问题(硬件不判溢出,仅保留2n位乘积):乘积的高n位全0或全1,并等于低n位的最高位时不溢出(无符号高n位全0)

  • 相同机器数无符号数和有符号数高n位可能不同,低n位相同,故指令分无符号数乘指令、有符号数乘指令

  • 乘法运算比移位和加法等运算所用时间长,故往往用组合运算代替,例如x×20,20=24+22,故x×20=(x<<4)+(x<<2)

  • 乘法实现细节可在考前看重新看一遍王道回忆细节,前期理解即可

整数的除法运算
  • 整数除运算除了-2^(n-1)/-1会溢出,其他情况不溢出

  • 不能整除时需要舍入

    • 正数:商取比自身小的最接近的整数

    • 负数:商取比自身大的最接近整数(加偏移量2^k-1,右移k位)

  • 整数除法运算复杂,约30或更多时钟周期(除数为2的幂次形式,用右移代替)

  • 除法实现细节可在考前看重新看一遍王道回忆细节,前期理解即可

浮点数的加减运算

  • 对阶

    • 小阶看齐大阶,将阶码小的尾数右移一位,阶加一,直到两个数的阶码相等
  • 尾数求和

  • 规格化(若补码负数则关注第一个0位置,虽然IEEE754标准尾数是原码)

    • 最后形式:+/-1.xxx…xxx

    • 左规:结果为+/-0.0…01xxx…xxx时,需要左规,尾数左移一次,阶码减1,直到第一个1移到小数点左边,作为隐藏位

      • 每次阶码减1判断是否下溢,阶码下溢,结果为0
    • 右规:结果为+/-1x.xxx…xxx时,需要右规,尾数右移一次,阶码加1,直到第一个1移到小数点左边,作为隐藏位

      • 每次阶码加一后判断是否上溢,阶码上溢,中断处理
  • 舍入

    • IEEE754舍入方式

      • 就近舍入(舍入为最近可表示的数)

        • 非中间数:0舍1入,中间数:强迫结果为偶数
      • 朝+∞方向舍入(+∞方向最近的可表示的数)

      • 朝-∞方向舍入(-∞方向最近的可表示的数)

      • 朝0方向舍入=直接截去

    • 舍入结果可能导致尾数未规格化,需再次右规判断溢出情况

  • 若运算结果尾数为0,阶码也置0

在这里插入图片描述
例1
在这里插入图片描述
在这里插入图片描述
例2
在这里插入图片描述

不同类型转换

  • char—>int

    • 前面补0
  • int<—>unsigned

    • 都可能溢出丢失数据
  • int—>float

    • 不会发生溢出,但可能有数据舍入
  • double—>float或int

    • 可能发生溢出,可能舍入
  • float或double—>int

    • 数据向0方向截断
  • char—>int—>long—>double
    float—>double

    • 范围精度由小变大,无损失

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

浮点数的运算思维导图

在这里插入图片描述

考研真题

408 - 2023

下面是题目13的格式化表述:

13. 计算short型变量的机器数

若short型变量x=-8190,则x的机器数为【 】。

A. E002H

B. E001H

C. 9FFFH

D. 9FFEH

基础知识

在解析这个问题之前,让我们了解以下基础知识:

  1. short型变量:short是一种整数数据类型,通常占用16位内存空间。在计算机内部,整数通常以补码形式表示。这意味着正数和负数都有相应的二进制表示。

  2. 补码表示:补码是一种用于表示带符号整数的方法。正数的补码和原码相同,而负数的补码是将其绝对值的二进制表示按位取反,然后加1。

解析:
short型变量是补码表示的16位带符号整数。x是负数,可先求出8190的机器数,8190=8192-2=213- 2’,8190的机器数为0010 0000 0000 0000B -0000 0000 0000 0010B=0001 1111 11111110B,因此-8190的机器数为1110 0000 0000 0010B = E002H(按位取反,末位加1)。

首先,我们知道short型变量是16位的,因此需要计算-8190的16位补码表示。
2^13表示为10 0000 0000 0000(2)

  1. 首先,计算8190的二进制表示:8190 = 2^13 - 2 = 1 1111 1111 1110。

  2. 接下来,求-8190的补码,即将8190的二进制表示按位取反,然后加1。

    • 按位取反:
      • 0001 1111 1111 1110B
      • 1110 0000 0000 0001B
    • 加1:
      • 1110 0000 0000 0001B
      • +1↓
      • 1110 0000 0000 0010B

首先,将二进制数 1110 0000 0000 0010 分成四组,每组四个二进制位:

  • 1110(二进制)对应于 E(十六进制)。
  • 0000(二进制)对应于 0(十六进制)。
  • 0000(二进制)对应于 0(十六进制)。
  • 0010(二进制)对应于 2(十六进制)。

所以,x的机器数为1110 0000 0000 0010B。在十六进制表示中,答案是选项A:E002H。

14. 计算IEEE 754 单精度浮点数的值

已知float型变量用IEEE 754单精度浮点数格式表示。若float型变量x的机器数为80200000H,则x的值是什么?

A. -2^-128

B. -1.01x2^-127

C. -1.01x2^-126

D. 非数(NAN)
答案:A

基础知识

在解析这个问题之前,让我们了解以下基础知识:

  • IEEE 754 单精度浮点数:IEEE 754是一种标准,用于表示浮点数在计算机中的二进制格式。单精度浮点数使用32位二进制格式,分为符号位、阶码和尾数。

  • 规格化数(normalized numbers):对于规格化数,阶码部分不全为0或全为1,而是以一定的方式表示浮点数的阶。这使得浮点数可以表示较大或较小的数值范围。

  • 非规格化数(denormalized numbers):当阶码部分全为0时,就进入了非规格化数的领域。在这种情况下,尾数部分不再表示1.xxxx的形式,而是0.xxxx的形式。这意味着非规格化数表示非常接近零的小数值,但失去了一些精度。

在这里插入图片描述

在这里插入图片描述

16. 溢出和借位标志问题

问题: 已知 x 和 y 为 int 类型,当 x=100, y=200 时,执行“x减y”指令的到的溢出标志 OF 和借位标志 CF 分别为 0, 1,那么当 x=10, y=-20 时,执行该指令得到的 OF 和 CF 分别是( )。

A. OF=0, CF=0

B. OF=0, CF=1

C. OF=1, CF=0

D. OF=1, CF=1

答案:B. OF=0, CF=1

基础知识:

int为32位有符号整型,int 为 32 位有符号短整型,用补码表示,最高位为符号位,
表示范围为 在这里插入图片描述

当 x=10, y=-20 时,x-y=30,显然在表示范围之内,不溢出,OF=0。

当 x=10, y=-20 时,[x]补=[x]原=0000 0000 0000 0000 0000 0000 0000 1010B=0000000AH,[y]原=1000 0000 0000 0000 0000 0000 0001 0100B,[y]补=1111 1111 1111 1111 1111 1111 1110 1100=FFFFFFECH,显然0000000AH-FFFFFFECH不够减,需要借位,CF=1。

408 - 2022

13. 32位补码整数范围

问题: 32位补码所能表示的整数范围是?

A. -2^32 到 2^31 - 1

B. -2^31 到 2^31 - 1

C. -2^22 到 2^32 - 1

D. -2^31 到 2^32 - 1

答案: B. -2^31 到 2^31 - 1

基础知识: 在32位补码表示中,最高的1位用于表示符号位(0表示正数,1表示负数),剩下的31位用于表示数值。因此,32位补码可以表示的整数范围是从-231到231-1。

当然,以下是按照之前的结构以Markdown形式重构的题目和答案:

14. IEEE754单精度浮点数表示

问题: -0.4375的IEEE754单精度浮点数表示为何?

A. BEE0 0000H

B. BF60 0000H

C. BF70 0000H

D. C0E0 0000H

答案: A. BEE0 0000H

基础知识:

类型数符阶码尾数数值总位数
短浮点数182332

-0.4375=-1.75×2^-2,符号S =1,阶码E=-2+127= 125= 01111101B,尾数0.75=0.11B,
补齐至23位M = 110 0000 0000 0000 0000 0000B。

IEEE754单精度浮点数的格式包括符号位、阶码和尾数部分,总共32位。-0.4375的IEEE 754单精度浮点表示如下:

  • 符号位:0(表示正数)
  • 阶码部分:01111101(对应的十进制为125)
  • 尾数部分:110 0000 0000 0000 0000 0000

拼接起来为BEE0 0000H。

408 - 2021

13. 带符号整数的补码表示与大小比较

问题: 已知带符号整数用补码表示,变量 x,y,z 的机器数分别为 FFFDH,FFFDFH,7FFCH,下列结论中,正确的是?

A. 若 x、y 和 z 为无符号整数,则 z < x < y

B. 若 x、y 和 z 为无符号整数,则 x < y < z

C. 若 x、y 和 z 为带符号整数,则 x < y < z

D. 若 x、y 和 z 为带符号整数,则 y < x < z

答案:D

基础知识:

  1. 带符号整数的补码表示:在计算机中,带符号整数通常使用补码表示。在补码中,最高位为符号位(0 表示正数,1 表示负数),其余位表示数值。

  2. 大小比较规则:对于带符号整数的补码表示,如果两个数的符号位不同,那么符号位为 0 的数更大;如果两个数的符号位相同,那么数值部分越大的数更大。

根据题目中给出的机器数:

  • x 的机器数 FFFDH 表示的是负数,其原码为 1000 0000 0000 0010B,转换成十进制为 -3。
  • y 的机器数 FFFFH 表示的是负数,其原码为 1000 0000 0000 0001B,转换成十进制为 -1。
  • z 的机器数 7FFCH 表示的是正数,其原码为 0111 1111 1111 1100B,转换成十进制为 2044。

根据大小比较规则,有 -3 < -1 < 2044,因此 y < x < z。

所以正确答案是 D. 若 x、y 和 z 为带符号整数,则 y < x < z

14. IEEE754浮点格式表示精度问题

问题: 下列数值中,不能用 IEEE754 浮点格式精确表示的是?

A. 1.2

B. 1.25

C. 2.0

D. 2.5

答案:A

基础知识:

IEEE754 是一种用于表示浮点数的标准格式,它使用科学计数法来表示浮点数,包括三个部分:符号位、指数部分和尾数部分。IEEE754 浮点格式的小数部分通常采用二进制表示。

在 IEEE754 浮点格式中,有效数字部分通常表示成规格化的形式,即一个小数乘以 2 的幂次方。有效数字的小数部分通常是 1 和 0 组成的二进制小数。

对于一个数值能够被精确表示为 IEEE754 浮点数,其小数部分必须满足以下条件:

  • 可以表示成 (1 + 1/2 + 1/4 + 1/8 + …) 的形式,其中分母是 2 的幂次方。

现在来分析选项中的数值:

A. 1.2 = 6/5 = 1 + 1/5,不满足上述条件,因此不能用 IEEE754 浮点格式精确表示。

B. 1.25 = 5/4 = 1 + 1/4,满足上述条件,可以用 IEEE754 浮点格式精确表示。

C. 2.0 = 2,可以表示成 2 的幂次方,满足条件,可以用 IEEE754 浮点格式精确表示。

D. 2.5 = 5/2 = 1 + 1/2,满足上述条件,可以用 IEEE754 浮点格式精确表示。

所以,不能用 IEEE754 浮点格式精确表示的是 A. 1.2

(未完待续,逐张试卷分析中)

相关文章:

【计算机组成原理】考研真题攻克与重点知识点剖析 - 第 2 篇:数据的表示和运算

前言 本文基础知识部分来自于b站&#xff1a;分享笔记的好人儿的思维导图与王道考研课程&#xff0c;感谢大佬的开源精神&#xff0c;习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析&#xff0c;本人技术…...

使用maven框架搭建一个IDEA插件项目

以下是使用 Maven 框架搭建 IDEA 插件项目的步骤&#xff1a; 打开 IDEA&#xff0c;点击 File -> New -> Project&#xff0c;选择 Maven。 在弹出的 New Project 窗口中&#xff0c;选择 Maven&#xff0c;然后选择 Create from archetype&#xff0c;找到 Maven 插件…...

第二届全国高校计算机技能竞赛——C++赛道 题解

Powered by:NEFU AB-IN Link 文章目录 第二届全国高校计算机技能竞赛——C赛道A 互不侵犯题意思路代码 B 奖学金题意思路代码 C 领导者题意思路代码 D 空调题意思路代码 E 字符操作变换题意思路代码 第二届全国高校计算机技能竞赛——C赛道 A 互不侵犯 题意 在象棋中&#xff…...

八大排序源码(含优化)

文章目录 1、直接插入排序2、希尔排序3、选择排序4、冒泡排序5、堆排序6、快速排序快速排序递归实现霍尔法挖坑法前后指针法快速排序小区间优化 快速排序非递归实现 7、归并排序归并排序递归实现归并排序非递归 8、计数排序 大家好&#xff0c;我是纪宁&#xff0c;这篇文章是关…...

单调队列---数据结构与算法

简介 队列也是一种受限制的线性表和栈相类似&#xff0c;栈是先进后出&#xff0c;而队列是先进先出&#xff0c;就好像一没有底的桶&#xff0c;往里面放东西&#xff0c;如图 在这里也是用数组来实现队列&#xff0c;用数组实现的叫做顺序队列 队列的数组模拟 const int N…...

小程序如何使用自定义组件

使用自定义组件的步骤如下&#xff1a; 创建自定义组件&#xff1a;在小程序项目根目录下的 components 文件夹中创建一个文件夹&#xff0c;然后在该文件夹中创建一个 .json 文件、一个 .wxml 文件和一个 .js 文件&#xff0c;这三个文件分别对应组件的配置、模板和逻辑。 在…...

归并排序含非递归版

目录 1.归并排序的原理 2.实现归并排序 2.1框架 2.2区间问题和后序遍历 2.3归并并拷贝 2.4归并排序代码 2.5测试 3.非递归实现归并排序 3.1初次实现 3.2测试 3.3修改 3.4修改测试 1.归并排序的原理 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治…...

项目进展(八)-编写代码,驱动ADS1285

一、代码 根据芯片的数据手册编写部分驱动&#xff0c;首先看部分引脚的波形&#xff1a; DRDY: CS&#xff1a; 首先在代码初始化时连续写入三个寄存器&#xff1a; void WriteReg(uint8_t startAddr, uint8_t *regData, uint8_t number) {uint8_t i0;// 循环写number1次…...

【MyBatis-Plus】快速精通Mybatis-plus框架—快速入门

大家在日常开发中应该能发现&#xff0c;单表的CRUD功能代码重复度很高&#xff0c;也没有什么难度。而这部分代码量往往比较大&#xff0c;开发起来比较费时。 因此&#xff0c;目前企业中都会使用一些组件来简化或省略单表的CRUD开发工作。目前在国内使用较多的一个组件就是…...

docker 安装kafka

运行容器 zookeeper: [rootk8s-master ~]# docker run -d --restartalways --log-driver json-file --log-opt max-size100m --log-opt max-file2 --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime zookeeper c603f292813cfd6e2b16fff88a9767cc86fc9bba34d82…...

容器内获得apiserver地址

1.容器的Env的KUBENETES_SERVICE_HOST字段 roottomcat01-69fc8f859b-w9btn:/tmp# env | grep KUBERNETES_SERVICE_HOST10.96.0.1 KUBERNETES_SERVICE_HOST10.96.0.12.通过域名查询 nslookup getent hosts roottomcat01-69fc8f859b-w9btn:/tmp# getent hosts kubernetes.def…...

linux服务端c++开发工具介绍(vscode版)

本文适合于有一定c开发经验&#xff0c;但是还不明确如何到linux服务端开发程序的同学。 一、vscode 几年前用的是ssh到云服务上&#xff0c;再用vim在云上开发的形式 ssh dongbeijing.dbj11.158.142.176 vim hello.c 现今&#xff0c;由于vscode比较好用&#xff0c;这几年…...

Linux常用命令大全

Linux常用命令大全 一、文件&目录管理1. 文件和目录操作命令2. 查看文件及内容处理命令3. 文件压缩及解压缩命令4. 搜索文件命令5. 其他 二、Linux 软件包管理三、用户管理1. 用户管理2. 查看系统用户登陆信息的命令 四、进程管理五、网络通信1. 基础网络操作命令2. 深入网…...

Python中取2023, 9, 1——2023, 10, 31的全部时间

使用datetime.date()函数定义了开始和结束日期。然后&#xff0c;我们使用datetime.timedelta()类创建了一个时间范围&#xff0c;其中n表示从开始日期到结束日期之间的天数。最后&#xff0c;我们使用一个for循环迭代时间范围内的日期&#xff0c;并打印每个日期。示例代码演示…...

创建django文件

1、在指定目录里打开终端&#xff0c;输入D:\Softwares\Anaconda3\envs\pytorch\Scripts\django-admin .exe startproject 名称 &#xff0c;即可在对应目录里创建django文件。...

全排列[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给定一个不含重复数字的数组nums&#xff0c;返回其所有可能的全排列。你可以按任意顺序返回答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例…...

mybatise-plus的id过长问题

一、问题情景 笔者在做mp插入数据库(id已设置为自增)操作时&#xff0c;发现新增数据的id过长&#xff0c;结果导致前端JS拿到的数据出现了精度丢失问题&#xff0c;原因是后端id的类型是Long。在网上查了一下&#xff0c;只要在该属性上加上如下注解就可以 TableId(value &q…...

图示矩阵分解

特征值与特征向量 设 A A A 是 n 阶矩阵&#xff0c;如果存在数 λ \lambda λ 和 n 维非零列向量 x x x&#xff0c;满足关系式&#xff1a; A x λ x ( 1 ) Ax \lambda x\quad\quad(1) Axλx(1) 则数 λ \lambda λ 称为矩阵 A A A 的特征值&#xff0c;非零向量 x…...

六、互联网技术——数据存储

文章目录 一、存储系统层次结构二、按照重要性分类三、磁盘阵列RAID三、RAID基础四、磁盘阵列分级五、数据备份与恢复六、容灾与灾难恢复 一、存储系统层次结构 常见的三层存储体系结构如下图所示&#xff0c;分为高速缓冲存储器、主存储器和外存储器。 二、按照重要性分类 …...

六、vpp 流表+负载均衡

草稿&#xff01;&#xff01;&#xff01; vpp node其实就是三个部分 1、plugin init 2、set command 3、function 实现功能&#xff0c;比如这里的流表 今天我们再用VPP实现一个流表的功能 一、流表 1.1流表----plugin init VLIB_REGISTER_NODE 注册流表节点 // 注册流…...

word已排序好的参考文献,插入新的参考文献,序号更新

原排序好的文献序号。 现在在3号后面插入一个新文献。4&#xff0c;5号应该成为5&#xff0c;6 这时在3号后面&#xff0c;回车&#xff0c;就会自动的增长。如下图&#xff1a; 但是如果手滑&#xff0c;把[4]删除了如何排序&#xff1f;&#xff1f; 如下图&#xff1a; …...

二叉树的顺序存储——堆——初识堆排序

前面我们学过可以把完全二叉树存入到顺序表中&#xff0c;然后利用完全二叉树的情缘关系&#xff0c;就可以通过数组下标来联系。 但是并不是把二叉树存入到数组中就是堆了&#xff0c;要看原原来的二叉树是否满足&#xff1a;所有的父都小于等于子&#xff0c;或者所有的父都…...

CYEZ 模拟赛 9

A a ⊥ b ⇒ a − b ⊥ a b (1) a \perp b \Rightarrow a-b \perp ab \tag {1} a⊥b⇒a−b⊥ab(1) 证明&#xff1a; gcd ⁡ ( a , b ) gcd ⁡ ( b , a − b ) \gcd(a,b) \gcd(b, a-b) gcd(a,b)gcd(b,a−b)&#xff0c;故 a − b ⊥ b a - b \perp b a−b⊥b&#xff0c;同…...

typescript: Builder Pattern

/*** file: CarBuilderts.ts* TypeScript 实体类 Model* Builder Pattern* 生成器是一种创建型设计模式&#xff0c; 使你能够分步骤创建复杂对象。* https://stackoverflow.com/questions/12827266/get-and-set-in-typescript* https://github.com/Microsoft/TypeScript/wiki/…...

WPS/word 表格跨行如何续表、和表的名称

1&#xff1a;具体操作&#xff1a; 将光标定位在跨页部分的第一行任意位置&#xff0c;按下快捷键ctrlshiftenter&#xff0c;就可以在跨页的表格上方插入空行&#xff08;在空行可以写&#xff0c;表1-3 xxxx&#xff08;续&#xff09;&#xff09; 在空行中输入…...

Python的NumPy库(一)基础用法

NumPy库并不是Python的标准库&#xff0c;但其在机器学习、大数据等很多领域有非常广泛的应用&#xff0c;NumPy本身就有比较多的内容&#xff0c;全部的学习可能涉及许多的内容&#xff0c;但我们在这里仅学习常见的使用&#xff0c;这些内容对于我们日常使用NumPy是足够的。 …...

uniapp app 导出excel 表格

直接复制运行 <template><view><button click"tableToExcel">导出一个表来看</button><view>{{ successTip }}</view></view> </template><script>export default {data() {return {successTip: }},metho…...

【RabbitMQ】常用消息模型详解

文章目录 AMQP协议的回顾RabbitMQ支持的消息模型第一种模型(直连)开发生产者开发消费者生产者、消费者开发优化API参数细节 第二种模型(work quene)开发生产者开发消费者消息自动确认机制 第三种模型(fanout)开发生产者开发消费者 第四种模型(Routing)开发生产者开发消费者 第五…...

图像拼接后丢失数据,转tiff报错rasterfile failed: an unknown

图像拼接后丢失数据 不仅是数据丢失了&#xff0c;还有个未知原因报错 部分数据存在值不存在的情况 原因 处理遥感数据很容易&#xff0c;磁盘爆满了 解决方案 清理一些无用数据&#xff0c;准备买个2T的外接硬盘用着了。 然后重新做处理...

Nginx之日志模块解读

目录 基本介绍 配置指令 access_log&#xff08;访问日志&#xff09; error_log&#xff08; 错误日志&#xff09; 基本介绍 Nginx日志主要分为两种&#xff1a;access_log(访问日志)和error_log(错误日志)。Nginx日志主要记录以下信息&#xff1a; 记录Nginx服务启动…...

建设网站的虚拟主机在哪里买/开网店哪个平台靠谱

导读&#xff1a; 发表者&#xff1a;吴军&#xff0c;Google 研究员 前言&#xff1a;隐含马尔可夫模型是一个数学模型&#xff0c;到目前为之&#xff0c;它一直被认为是实现快速精确的语音识别系统的最成功的方法。复杂的语音识别问题通过隐含马尔可夫模型能非常简单地被表述…...

淘宝关闭网站建设类目/做企业网站建设公司哪家好

转眼进入8月&#xff0c;室外气温一度攀升&#xff0c;跟人做防晒一般&#xff0c;汽车也要做好养护。比如汽车长期在外不能暴晒&#xff0c;如何做防晒&#xff0c;车胎保养&#xff0c;夏季频繁降雨如何做好养护等&#xff0c;这些都是困扰车主的保养难题。那么到底夏季汽车保…...

wordpress 怎么改密码/网络服务中心

Word2vec&#xff0c;是为一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络&#xff0c;用来训练以重新建构语言学之词文本。网络以词表现&#xff0c;并且需猜测相邻位置的输入词&#xff0c;在word2vec中词袋模型假设下&#xff0c;词的顺序是不重要的。训练完成…...

聊城专业建网站价格/怎么做私人网站

#### 双向循环的经典练习#1.打印十行十列小星星(2个循环)#j 外循环用来控制行数j 0while j<10:#打印一行十个星星i 0while i <10:#写上循环的逻辑print("*",end"")i1#打印换行print()j1#2.打印十行十列小星星(隔列换色小星星,两个循环)i 0while i<…...

网站规划与设计大作业怎么做/郑州网站建设专业乐云seo

编写一个程序&#xff0c;实现输入&#xff1a; 输入有多行&#xff0c;每行有两个字符(大写的R或V或I)和两个实数(在(0,1000]范围内的实数&#xff0c;可以是小数)。 A1 A2 B1 B2 其中A1和B1是字符&#xff0c;A2是参数A1的值&#xff0c;B2是参数B1的值 例如 V 2 I 1 表示电压…...

凡科网怎么做网站/环球军事网

本文实例讲述了PHP实现超简单的SSL加密解密、验证及签名的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;1. sign签名代码&#xff1a;function sign($data) { //读取私钥文件 $priKey file_get_contents(key/rsa_private_key.pem); //转换为openssl密钥&#x…...