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

【计算机组成原理与体系结构】数据的表示与运算

目录

一、进位计数制

二、信息编码

三、定点数数据表示

四、校验码

五、定点数补码加减运算

六、标志位的生成

七、定点数的移位运算

八、定点数的乘除运算

九、浮点数的表示

十、浮点数的运算


一、进位计数制

整数部分:

  • 二进制、八进制、十六进制   --->   十进制:加权求和
  • 二进制   --->   八进制:每三位分为一组,转为八进制数
  • 二进制   --->   十六进制:每四位分为一组,转为十六进制数
  • 十进制   --->   二进制:除2取余,先得到低位
  • 十进制   --->   八进制、十六进制:先转为二进制,再转为八进制数或十六进制数

小数部分:

  • 十进制转换为任意进制:乘积取整法,结果不能得到准确值,则取精度值
  • 二进制   --->   八进制、十六进制:与整数部分类似
  • 二进制   --->   十进制:加权求和
  • 八进制、十六进制   --->   十进制:先转为二进制,再转为十进制

真值:符合人类习惯的数字

机器数:数字实际存在机器里的形式

二、信息编码

BCD码:Binary Coded Decimal,二-十进制码,即用二进制数表示十进制数。

BCD码分为有权码和无权码。常见的有权码有8421码、2421码、84-2-1码,常见的无权码有格雷码、余三码。

有权码的共性:都是自补码,即任意两个和为9的编码,互为补码。

格雷码:任何相邻的两个编码之间只有一位二进制位不同。

余三码:每个编码都是其8421码加上0011所得。

三、定点数数据表示

原码

反码

补码

移码

四、校验码

奇偶校验码:奇校验位的取值应该使整个奇校验码中“1”的个数为奇数,偶校验码的取值应该使整个偶校验码中“1”的个数为偶数

奇偶校验码的码距为2,具有检查一位错误或奇数位错误的能力。

五、定点数补码加减运算

六、标志位的生成

OF:Overflow Flag bit,溢出标志位(只对有符号数加减有意义)

SF:Sign Flag bit,符号标志位(只对有符号数加减有意义)

ZF:Zero Flag bit,判零标志位

CF:Carry Flag bit,进位/借位标志位(只对无符号数加减法有意义)

PF:Parity Flag bit,奇偶标志位

OF可以由最高位产生的进位S1和次高位产生的进位S2异或所得,即OF = S1 ⊕ S2

CF可以由最高位产生的进位S1和sub加减控制信号异或所得,即CF = S1 ⊕ sub

七、定点数的移位运算

算术移位:通过改变各个数码位与小数点的相对位置,从而改变各数码位的位权。可用移位运算实现乘法、除法。

原码的算术移位:符号位不变,仅对数值位进行移位。

右移——高位补0,低位舍弃,若舍弃不为0,丢失精度;

左移——低位补0,高位舍弃,若舍弃不为0,出现严重误差。

反码的算术移位:正数与原码一样,负数与原码不同

负数右移——高位补1,低位舍弃;

负数左移——低位补1,高位舍弃。

补码的算术移位:正数与原码、反码一样

补码是原码的反码低位加一所得,所以补码的前半部分同反码,后半部分同原码

负数右移——高位补1,低位舍弃;

负数左移——低位补0,高位舍弃。

逻辑移位:右移则高位补0低位舍弃,左移则低位补0高位舍弃,视作对无符号数处理。

循环移位:用移出去的位,补上空缺的位。带CF标志位一起的循环,称为大循环,不带则是小循环。

八、定点数的乘除运算

原码的乘法运算

补码的乘法运算

原码的除法运算

补码的除法运算

九、浮点数的表示

浮点数的格式

浮点数规格化

浮点数的溢出

  • 出现上溢:系统中断
  • 出现下溢:当作机器0处理
  • 当浮点数尾数为0:当作机器0处理,无视阶码

 真值与浮点数格式的转换

十进制数与单精度浮点数的转换

十、浮点数的运算

浮点数加减运算步骤

  1. 对阶:小阶向大阶对齐
  2. 尾数加减:阶数不变
  3. 规格化:保证尾数的第一个数值位是一个有效位
  4. 舍入:①截断法;②0舍1入法;③末尾恒置1法
  5. 判溢出:根据双符号是否一样panduan


http://www.lryc.cn/news/91218.html

相关文章:

  • 如何入门编程
  • SQL中CONVERT转化日期函数的使用方法
  • SpringBoot2-核心技术(一)
  • mac host学习
  • Java之~指定String日期时间,5分钟一截取时间
  • 【chatGPT4结对编程】chatGPT4教我做图像分类
  • Different romantic
  • learn C++ NO.7——C/C++内存管理
  • SDUT数据库原理——第十章作业(参考答案)
  • My Note of Diffusion Models
  • 【P37】JMeter 仅一次控制器(Once Only Controller)
  • cleanmymac要不要下载装机?好不好用
  • DNS风险分析及防护研究(五):常见的DNS威胁与防御(中科三方)
  • 使用geoserver发布shp和tiff数据
  • 谷歌周彦祺:LLM浪潮中的女性科学家多面手丨智源大会嘉宾风采
  • Burp模块
  • sql笔记:SQL SERVER字符串填充(标量值函数创建、标量值函数调用)
  • python使用hTTP方法
  • JavaSE常用API
  • 华为OD机试之模拟商场优惠打折(Java源码)
  • 5月VR大数据:Quest 2下跌超1%,其它变化不大
  • CW32系列模数转换器(ADC)
  • 电动力学专题:电磁场规范不变性与规范自由度
  • max delay的应用场景与常见问题
  • 非阻塞队列
  • 动力电池管理系统(BMS)
  • ChatGPT桌面客户端支持gpt4模型,附使用说明
  • Vivado下时序逻辑模块的仿真
  • ThreadLocal的使用方式
  • 全面理解:C++中的指针和迭代器,以及解引用操作符(*)和箭头操作符(->)的用法