计组--信息编码和数据表示and运算方法运算器(复习专用)

文章目录

  • 前言
  • 一、数值的格式
  • 二、定点机器数的表示方式
    • 1.原码表示法:
    • 2.补码表示法:
    • 3.反码表示法:
    • 4.移码表示法:
  • 三、浮点机器数的表示方式(规格化)
  • 四、定点数的加减乘除运算
  • 五、定点运算器的组成与结构
  • 六、浮点运算
  • 总结


前言

学无止境,笔勤不辍。真正开始复习计组,就会发现 它 真的难…笔者这次整理了有关补码、移码、原码、反码表示的方法、浮点数的表示 and与它们相关的计算,和硬件实现结构和操作的知识点,希望能給大家一些帮助,同时也希望大家多多分享易错点…


一、数值的格式

一般参与计算机运算的数值数据有两种:
1.无符号数:所有的二进制数据位都用来表示数值本身,无正负
2.有符号数:一般最高位是符号位,代表正负,不代表本身数值大小
当有符号数和无符号数位数相等时,表示的范围是不同的
本身计算机硬件无需区分有符号数或是无符号数,通过程序不同指令来区分即可

定点表示法:约定机器数的小数点位置是固定不变的
浮点表示法:浮点数N由三部分组成,阶码E(定点整数表示) M尾数(定点小数表示) R阶码的底(一般默认为2、8、16)
浮点数的小数点位置由阶码决定,随阶码大小变化而变化其实总的来说,精度由尾数决定,大小由阶码决定。
计算机的精度:1.计算机能表示的最大负数–副精度 2.计算机能表示的最小正数–正精度
精度由机器数的编码形式、位数、格式决定
当然,由于精度问题,会出现不同种类溢出问题,

1.位于最大负数和最小正数之间,计算机直接将其视为0处理,称为下溢
2.当机器数大于最大正数,称为正溢出
3.当机器数小于最小负数,称为负溢出

定点数and浮点数的异同点:
1.计算机所能代表的都是一系列的离散的点,并且采用近似的操作
2.硬件字长有限,无论定点数还是浮点数,都会溢出
3.定点数是均匀分布的,浮点数分布是离0点近密远疏的

二、定点机器数的表示方式

1.原码表示法:

1.形式:将真值中的正号用"0"表示,负号用"1"表示,放置在最高位,数值部分不变
2.特点:
1.0既可用正数原码表示,也可以用负数原码表示即 0的原码不唯一,占用了两个编码。
3.范围:
n+1位机器数条件下:
定点整数:(-(2n-1),(2n-1)) 定点小数(-(1-2-n),(1-2-n))
4.运算:
运算时,符号位单独处理,将真值的绝对值进行相加减,在判断符号位正负。
5.用途:
主要用于浮点数尾数的运算。

2.补码表示法:

1.形式:正数,符号位是"0",数值位是真值绝对值;负数,符号位是“1”,数值位是按位取反后末位+1
2.特点:
真值0唯一
3.范围:
n+1位机器数条件下:
定点整数:(-2n,2n-1) 定点小数:(-1,(1-2-n))
4.运算:
基本上加减运算都用补码
5.用途:
用补码表示有符号整数

3.反码表示法:

1.形式:正数,符号位是"0",数值为是真值绝对值;负数,符号位是"1",数值位将真值绝对值按位取反
2.特点:
真值"0"的表示不唯一,占用了全"0"编码和全"1"编码
3.范围:
n+1位机器数条件下:
与原码相同
4.运算:
基本不用
5.用途:

4.移码表示法:

只用来表示定点整数ps.笔者也不是特别理解
1.形式:正数,符号位是"1",数值位是真值绝对值;负数,符号位是"0",数值位按位取反后+1
2.特点:
真值"0"的表示唯一
3.范围:
定点整数:(-2n,2n-1),-2n编码全0
4.运算:
适用于比较运算,无论正负,均从符号位开始,逐位比较大小即可
5.用途:
暂不作总结…

三、浮点机器数的表示方式(规格化)

1.规格化的阶码的底R为2的尾数M应该满足的条件为:2-1<=|M|<=1,无前导零
判断:若M是原码表示,则最高有效位为1即可,形式如x.1xxxx…
若M是补码表示,则最高有效位和符号位要相异,形式如0.1xxxxx…或1.0xxxxxx…
2.对于非规格化的尾数,要对其进行规格化操作:对于原码,若符号位是0,必须左移,操作为(尾数M每左移一位,阶码减一),直到形式为x.1xxxx…;对于补码形式,当符号位和最高位相同时也必须左规,直到符号位和最高位相异…
注意,格式化的浮点机器数表示范围和非规格化的浮点数机器数表示范围不一定相等
大数和小数相加减的时候,可能会出现大数吃小数的现象,就是因为浮点数疏密不均,导致小数直接被大数吸收
3.IEEE754浮点数格式
1.单精度:总位数32位,格式MsEM,数符位+阶码+数值位,规格化真值计算:(-1)Ms *(1.M)*2E-127 非规格化真值计算:(-1)Ms *(0.M)*2-126
2.双精度:将其中的127改成1023 126改为-1022即可
规格化IEEE754浮点数的阶码不全是1也不全是0
规格化时,尾数采用隐藏位,即原码表示的规格化尾数的数值最高位的1省略,可多出一位有效位

四、定点数的加减乘除运算

1.移位运算:1.补码算术左移,最高位移出,低位补"0",补码算术右移,低位移出,高位补符号位,即若为负数补"1",正数补"0";原码(andIEEE754浮点数的尾数)算数左移,符号位不变,数值最高位移出,低位补"0",算术右移,符号位不变,低位移出,高位补"0"
注意可能会有溢出
实现:可用属于组合逻辑电路的桶形移位器…
2.加减运算:
基本都采用补码形式,涉及了各类形式码和补码之间的转化
溢出:1.正溢出,正确结果是正数,结果算出是负数 2.负溢出,正确结果是负数,结果算出是正数。
异号两数相加,同号两数相减,绝对不会发生溢出
溢出的判断:

1.进位位判溢法:数值最高有效位和符号位的进位相同时,不溢出,否则溢出
2.双符号位判溢法:重复一位符号位参与计算,观察两个符号位加减之后是否相同,不相同则溢出 
3.单符号位判溢法:靠人工...

移码相加减:最好将另一计算数转为补码,进行相加减…
判溢时,若使用双符号判溢法,则移码表示的那个计算数复写符号位时恒为0,当最高符号位为1时溢出…
由于笔者期末考不涉及乘法和除法运算..因此就简单介绍一下原码形式的串行乘法和除法...
3.乘法运算(X*Y)

ps,部分积和乘数|Y|写在同一行
1.初始化部分积为0,乘数为|Y|
2.若|Y|最右边数位1,则部分积+|X|;若为0,则部分积+0
3.整体右移一位4.最终得到答案

4.乘法运算(X/Y)

ps,商和被除数|X|写在同一行
1.商初始化为0,被除数为|X|
2.第一次被除数-|Y|若符号位位0,商上1,左移一位再减去|Y|求下次的部分余数;若符号位是1,商上0,左移一位再加上|Y|求下次的部分余数
3.整体右移一位
4.循环操作,最后一次若商上0,要加上|Y|恢复余数

五、定点运算器的组成与结构

1.运算器是在控制器的控制下,完成数据的算术逻辑运算,组成部件一般为算法逻辑部件(ALU,核心部件)、暂存器(存放运算数据和结果)、通用寄存器堆(访问使用到的数据)、标志寄存器(记录运算器上次的结果状态)、内部总线(信息通道)、可选电路(包括数据选择器、移位器、三态缓冲器)等构成
有单总线、双总线两种结构
数据通路:源部件将数据送入总线,目的部件从总线接受数据,这个过程需要一个CPU周期,各个总线源部件的数据输出使能信号不能同时有效,即无论何时,只允许一个部件将数据送入总线,分时享用总线
一个CPU周期内,某条总线上的数据必须是唯一,且不能保留到下一CPU周期
多端口寄存器堆:能够同时对一组寄存器进行读出或者写入多个数据
标志寄存器:

1.ZF(标志为0寄存器):运算结果全为0,置1;不全为0,置0
2.CF(进位/借位寄存器):CF=1,发生进位/借位,否则置0。只对无符号数运算有意义
3.OF(溢出标志):OF=1,溢出;OF=0,无溢出,对有符号数运算有意义
4.SF(符号标志):与运算结果的符号位相同,对有符号数有用
5.PF(奇偶标志):结果中1的个数为偶数,置1,否则置0

六、浮点运算

1.浮点数运算时,一般参与运算的机器数时规格化的,计算结果也要时规格化的
2.浮点数加减运算:

规则:1.指数(E)相同,需要对阶,且小对大,最终以大的为基准 2.尾数进行相加减 3.结果规格化,左规或右规 4.舍入处理
舍入处理的方法:
1.截断法:将多余尾数直接去除
2.末位恒置1法:无论多余尾数如何,在舍入结果的最末位置置1
3.0舍1入法:多余位最高位为1,进1;否则舍去
IEEE754浮点数舍入方法:
1.向上舍入,靠近+∞:若为正数,只要多余位数不全为0,则进1;若为负数,则直接截断法
2.向下舍入,靠近-∞:若为负数,只要多余位数不全为0,则进1;若为正数,则直接截断法
3.向0舍入:无论正负,均使用截断法,不过会累积误差
4.就近舍入:即类似于四舍五入

乘除运算不涉及...


总结

以上就是今天要讲的内容,本文跨时长极大,主要是完成各种期末大作业…笔者也正式进入了期末周,将持续对计组和数据库的知识点、章节进行持续更新…希望大家多多关注…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/857939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FlinkCDC pipeline模式 mysql-to-paimon.yaml

flinkcdc 需要引入&#xff1a; source端&#xff1a; flink-cdc-pipeline-connector-mysql-xxx.jar、mysql-connector-java-xxx.jar、 sink端&#xff1a; flink-cdc-pipeline-connector-paimon-xxx.jar flinkcdc官方提供connect包下载地址&#xff0c;pipeline模式提交作业和…

Python 函数注解,给函数贴上小标签

目录 什么是函数注解? 为什么使用函数注解? 如何编写函数注解? 实战演练 与类型提示(Type Hints)的关系 类型安全的运算器 什么是函数注解? 函数注解(Function Annotations)是Python 3中新增的一个特性,它允许为函数的参数和返回值指定类型。 这些注解不会改变…

Paimon Trino Presto的关系 分布式查询引擎

Paimon支持的引擎兼容性矩阵&#xff1a; Trino 是 Presto 同项目的不同版本&#xff0c;是原Faceboo Presto创始人团队核心开发和维护人员分离出来后开发和维护的分支&#xff0c;Trino基于Presto&#xff0c;目前 Trino 和 Presto 都仍在继续开发和维护。 参考&#xff1a;

win10 安装openssl并使用openssl创建自签名证书

win10创建自签名证书 下载安装配置openssl 下载地址&#xff1a; https://slproweb.com/download/Win64OpenSSL-3_3_1.exe https://slproweb.com/products/Win32OpenSSL.html 完成后安装&#xff0c;一路next&#xff0c;到达选位置的之后选择安装的位置&#xff0c;我这里选…

已成功见刊检索的国际学术会议论文海报展示(2)

【先投稿先送审】第四届计算机、物联网与控制工程国际学术会议&#xff08;CITCE 2024) 大会官网&#xff1a;www.citce.org 时间地点&#xff1a;2024年11月1-3日&#xff0c;中国-武汉 收录检索&#xff1a;EI Compendex&#xff0c;Scopus 主办单位&#xff1a;四川师范…

计算机组成原理 —— 存储系统(主存储器基本组成)

计算机组成原理 —— 存储系统&#xff08;主存储器基本组成&#xff09; 0和1的硬件表示整合结构寻址按字寻址和按字节寻址按字寻址按字节寻址区别总结 字寻址到字节寻址转化 我们今天来看一下主存储器的基本组成&#xff1a; 0和1的硬件表示 我们知道一个主存储器是由存储体…

C++ | Leetcode C++题解之第174题地下城游戏

题目&#xff1a; 题解&#xff1a; class Solution { public:int calculateMinimumHP(vector<vector<int>>& dungeon) {int n dungeon.size(), m dungeon[0].size();vector<vector<int>> dp(n 1, vector<int>(m 1, INT_MAX));dp[n][m …

基于状态机与时间片轮的51单片机电子钟设计 程序Proteus仿真

在对分层思想、时间片轮转和状态机思想进行[简单应用] ## 二、主函数 主函数如下&#xff1a; 整个主函数的中心任务为功能选择切换任务&#xff0c;负责切换显示内容&#xff0c;控制ui变化等&#xff0c;其余任务函数除提醒任务外都是通过全局变量的形式给功能选择切换任务提…

MongoDB Map-Reduce 简介

MongoDB Map-Reduce 简介 MongoDB 是一个流行的 NoSQL 数据库,它使用文档存储数据,这些数据以 JSON 格式存储。MongoDB 提供了多种数据处理方法,其中 Map-Reduce 是一种用于批量处理和聚合数据的功能强大的工具。Map-Reduce 允许用户对大量数据进行自定义的聚合操作,适用于…

【大数据 复习】第7章 MapReduce(重中之重)

一、概念 1.MapReduce 设计就是“计算向数据靠拢”&#xff0c;而不是“数据向计算靠拢”&#xff0c;因为移动&#xff0c;数据需要大量的网络传输开销。 2.Hadoop MapReduce是分布式并行编程模型MapReduce的开源实现。 3.特点 &#xff08;1&#xff09;非共享式&#xff0c;…

MySQL学习笔记-进阶篇-视图和存储过程

四、视图和存储过程 视图 存储过程 基本语法 创建 CREATE PROCEDURE ([参数列表]) BEGIN --SQL END; 调用 CALL 存储过程名&#xff08;[参数列表]&#xff09; 查看 --查看指定数据库的存储过程及状态信息 SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SHCEMA…

构建高可用Java微服务架构的秘籍

构建高可用Java微服务架构的秘籍 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 随着云计算和分布式系统的快速发展&#xff0c;微服务架构已成为构建大型应用…

indexedDB---掌握浏览器内建数据库的基本用法

1.认识indexedDB IndexedDB 是一个浏览器内建的数据库&#xff0c;它可以存放对象格式的数据&#xff0c;类似本地存储localstore&#xff0c;但是相比localStore 10MB的存储量&#xff0c;indexedDB可存储的数据量远超过这个数值&#xff0c;具体是多少呢&#xff1f; 默认情…

【软件设计】详细设计说明书(word原件,项目直接套用)

软件详细设计说明书 1.系统总体设计 2.性能设计 3.系统功能模块详细设计 4.数据库设计 5.接口设计 6.系统出错处理设计 7.系统处理规定 软件全套资料&#xff1a;本文末个人名片直接获取或者进主页。

C语言笔试题:实现把一个无符号整型数字的二进制序列反序后输出

目录 题目 实例 方法一&#xff1a;直接交换 方法二&#xff1a;间接交换 拓展 题目 编写一个函数&#xff0c;将一个无符号整数的所有位逆序&#xff08;在32位机器下&#xff09; 实例 例如有一个无符号整数 unsigned int num 32; unsigned int 在32位系统中占4个字…

Selenium - 翻页(常用代码)

文章目录 本文基于 macOS 10.15.7 | selenium - Version: 4.21.0 | Python 3.11.5 import time import os import sys from selenium import webdriver from selenium.webdriver.common.by import Bylist_path list.txtdef next_page(driver):# 示例&#xff1a;获取页面列表…

python从入门到精通10:字符串遍历

在Python中&#xff0c;字符串遍历是一个常见的操作&#xff0c;它允许我们逐个访问字符串中的每个字符。下面将详细讲解Python字符串遍历的几种方式&#xff0c;并结合示例代码进行说明。 1. 使用for…in循环遍历字符串 for…in循环是Python中最常用的遍历字符串的方式。这种…

starrocks进行数据的删除

StarRocks 是一个高性能的分析型数据库&#xff0c;它支持对数据进行各种操作&#xff0c;包括删除操作。在 StarRocks 中&#xff0c;您可以使用 DELETE FROM 语句来删除表中满足特定条件的行。 根据 StarRocks 的文档&#xff0c;DELETE 语句的基本语法如下&#xff1a; sq…

洛谷 P10584 [蓝桥杯 2024 国 A] 数学题(整除分块+杜教筛)

题目 思路来源 登录 - Luogu Spilopelia 题解 参考了两篇洛谷题解&#xff0c;第一篇能得出这个式子&#xff0c;第二篇有比较严格的复杂度分析 结合去年蓝桥杯洛谷P9238&#xff0c;基本就能得出这题的正确做法 代码 #include<bits/stdc.h> #include<iostream&g…