计算机组成原理的学习笔记(2)--数据的表示和运算·其一

学习笔记

前言

本文主要是对于b站尚硅谷的计算机组成原理的学习笔记,仅用于学习交流。

正文

1. 浮点数表示

  • 浮点数结构

    • 符号位(1 位):表示数值的正负。

    • 阶码(8 位):表示指数部分,使用偏移量(bias)进行编码,多为 127。

    • 尾数(23 位):表示有效数字部分,隐含前导 1。

  • 小数点位置

    • 通过尾数和阶码共同决定。尾数部分隐含一个 1,小数点在这个数字之后,阶码调整小数点位置。

    • 由于尾数可以表示小数,而小数的n次方不像整型的n次方,小数可以表示的范围会更大,就变得能够表示很多数据了,表示的数据范围也更大了!

  • IEEE 754 标准:浮点数遵循该标准以表示真实世界中的数值,提供有效的数值范围。

2. 移码表示

  • 定义:移码是通过对数值加上一个固定的偏移量(bias),使得浮点数或有符号整数的表示能够规范化,也便于比较。

  • 转换

    • 正数的移码值:实际值 + 偏移量。

    • 负数的移码值:实际值 + 偏移量。

  • 特点:允许负数和正数直接进行比较,无需关注符号。

3. 补码和反码

  • 原码:最基本的表示方式,符号位 + 数值。

  • 反码:负数由原码的符号位不变,其余位取反。

  • 补码:在反码的基础上加 1。补码是计算机中使用的主要数值表示形式。

4. 运算后的符号判断

  • 加法结果判断

    • 使用符号位判断结果是正数还是负数。
  • 溢出

    • 两个同符号数相加,若结果符号位变化则发生溢出。

5. 符号位的影响

  • 进位与符号位:当进行补码的运算的时候,进位不会影响最终结果的符号位,符号位决定结果是否为正数或负数,而符号位之后的不考虑。

7. 整数溢出

  • 整数溢出 :由于补码表示的特性,当超出表示范围时,会出现负数等错误结果,例如,当进行超过这个int类型的运算时,溢出 就会发生。比如说,如果你尝试将2,147,483,647

    二进制中表示为:01111111 11111111 11111111 11111111加上 1, 正常情况下应为 2,147,483,648,但在 int 补码表示中,这是无法表示的。因为溢出,结果会变成:10000000 00000000 00000000 00000000,这对应于 -2,147,483,648。这就是我们常说的爆int,在VS中可以验证这一点,如图所示:

  • 而当在unsigned int 类型中,赋值负数,同时以%u输出,则会将符号位识别为数值,同时输出,这一点也可以在编译器中进行验证。

结语

在学习这个数据的表示的时候,我其实最开始感觉挺无趣的,但是后面发现神奇的可以和我们在编译器里面常见的数据溢出联系起来,就开始感兴趣了,果然计算机很厉害,很多东西都不是无厘头的,有一种理性的美。

相关推荐
神明不懂浪漫11 小时前
【第十三章】操作符详解,预处理指令详解
c语言·开发语言·经验分享·笔记
此刻觐神11 小时前
Windows学习笔记-18(MFC项目-制作快捷方式管理工具)
windows·笔记·学习·mfc
科技林总12 小时前
【系统分析师】7.8 软件形式化方法
学习
FakeOccupational12 小时前
【电路笔记 元器件】存储设备:RAM 静态随机存取存储器(SRAM)芯片+异步 SRAM 的特性+异步 SRAM读写测试(HDL)
笔记·fpga开发
Alice_whj12 小时前
AI云原生笔记
人工智能·笔记·云原生
Lyan-X13 小时前
鲁鹏教授《计算机视觉与深度学习》课程笔记与思考 ——13. 生成模型 VAE:从无监督学习到显式密度估计的建模与实现
人工智能·笔记·深度学习·计算机视觉
weixin_4588726113 小时前
东华复试OJ每日3题打卡·复盘76~78
学习
好奇龙猫13 小时前
日语学习-日语知识点小记-日本語体系構造-JLPT-N2前期阶段-第一阶段(12):単語文法
学习
babe小鑫13 小时前
大专市场调查与统计分析专业学习指南
大数据·学习·信息可视化·数据挖掘
马猴烧酒.13 小时前
【面试八股|Mysql篇】Mysql常见面试题详解笔记
笔记·mysql·面试