计算机系统基础(二)

1.数值数据的表示

为什么采用二进制?

  • 二进制只有两种基本状态,两个物理器件就可以表示0和1
  • 二进制的编码、技术、运算规则都很简单
  • 0和1与逻辑命题的真假对应,方便通过逻辑门电路实现算术运算

数值数据表示的三要素

  • 进位记数制(十进制、二进制、十六进制)
  • 定浮点表示(解决小数点问题,定点小数:小数点固定居于最高位。定点数的原码、补码等还解决了正负号的问题)
  • 如何用二进制编码

原码与补码

首先我们先看原码

显而易见,负数的表示就是最高位取1,但是这样存在以下问题

  • 0 的表示不唯一
  • 加、减运算方式不统一
  • 需额外对符号位进行处理
  • 特别当 a<b时,实现 a-b比较困难

所以我们又引入补码的概念(机器数就是补码)

补码=模+该数本身(mod模),该数最高位必须是0

我们就可以得到:123的补码=0111 1011;-123的补码=1000 0101,再多举几个例子,我们发现:

  • 正数的补码就是其本身
  • 负数的补码等于对应正数补码的“各位取反、末位加1
  • 正数补码最高位是0,负数补码最高位是1

以及一些结论:

对于某一确定的模,某数减去小于模的另一数,总可以用该数加上另一数负数的补码来代替;

让我们来举一个例子:

最后结果1 0011 1111,再将其mod2^8(运算器只有有限位,假设为n位,则运算结果只能保留低n位,因此,其模为2^n),得到最终结果0011 1111

接下来是特殊数的补码

整数

整数分为无符号整数和有符号整数,例如8位无符号整数最大值1111 1111为255,有符号整数最大值0111 11111为127

c语言规定:若运算中同时有无符号和带符号整数,则按无符号整数运算

浮点数

规格化数

小数点前只有一位非零数

在计算机中,浮点数按如下格式存储

s位是符号位,正数是0负数是1

注意:规格化尾数的小数点总是1,不写进尾数M中

现在让我们举个例子,计算-12.75

首先12.75=1100.11;转化为科学计数法1.10011*2^3;阶数=3+127=130=1000 0010

尾数=100 1100 0000 0000 0000 0000;符号位为1

现在我们再来做一个题,反推

首先是负数;0111 1101是125,125-127=-2,指数为-2;根据尾数得1.11*2^-2;1.11又是1+0.5+0.25=1.75;所以最终的结果是1.75/4=0.4375

非规格化数

浮点数范围比定点数大,但数的个数没变多,故数之间更稀疏,且不均匀

说明浮点数不是能表示范围内的任意数!

当输入数据是一个不可表示数时,机器将其转换为最邻近的可表示数

在浮点数中所能表示的最小正数1*2^-126,尾数不能全为0

为什么是-126?这样可以使得出现比规格化数还小的数时程序也能继续下去

此时阶数-126,而尾数的隐藏数变为0

无穷数

在浮点数中阶数全为1并且尾数全为0则为无穷,如果尾数非零则是NaN

接下来,我们再来看计算机对于除数是0是怎么处理的:

计算机中除数为0的结果是 +/- ∞, 不是溢出异常.

这样可以将X/0>Y可作为有效比较

然而Sqrt (- 4.0) 以及0/0为NaN

阶数、尾数全为0,-0,+0表示不同

2.数据的存储

数据的基本宽度

存储器按字节编址,字节是最小可寻址单位 ,一般采用MSB(最高有效字节)

字与字长

字长:指数据通路的宽度

字:度量数据类型的宽度,16位(x86)

容量换算单位是1024,速度则是1000

大端:高地址存低字节

小端:高地址存高字节

譬如0x12345在小端机存储的方式

3.数据的运算

按位运算,逻辑运算与移位运算

按位运算

按位与:& 有零则零,两个都是1才是1,1与任何数字与都是那个数本身

按位或:|,有1就是1,两个都是0才是0

按位取反:~,1变0,0变1

按位异或:^,相同则为1,不同则为0

逻辑运算

&&,||,!,不做过多解释

移位运算

左移:<<,扩大两倍(可能会发生溢出)

右移:>>,缩小二分之一(可能有效数据丢失)

C语言中不区分是逻辑还是算术移位,编译器根据x的类型确定

扩展:短转长        无符号数:0扩展,前面补0;带符号整数:符号扩展,前面补符

截断:长转短       强行将高位丢弃,故可能发生“溢出”(没有规定编译器必须报错)

算术运算

  • ALUop:用来决定ALU所执行的处理功能。ALUop的位数k决定了操作的种类
  • OF:溢出标志,若A.B同号,但与Sum不同号,则1
  • SF:符号标志
  • ZF:零标志,sum为0,则为1
  • CF:进位/错位标志。当加法时,CF=1,表示加法有进位;减法时,CF=1,表示减法不够减
  • Sub:为1时做减法,为0时做加法
  • MUX:二路选择器

ZF,SF,CF,OF被称为条件标志,在运算电路中产生,被记录到专门的的寄存器中

重要认识

  • 计算机中所有算术运算都基于加法器实现!
  • 加法器不知道所运算的是带符号数还是无符号数。
  • 加法器不判定对错,总是取低n位作为结果,并生成标志信息

整数加法

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

带符号加溢出条件:OF=1

整数减法

Unsigned: CF=0时,大于

Signed:OF=SF时,大于

整数乘法

高级语言中两个n位整数相乘得到的结果通常也是一个n位整数

无符号:若Puh=0,则不溢出

带符号:若Psh每位都等于Ps的最高位,则不溢出

编译器在处理变量与常数相乘时,往往以移位、加法和减法的组合运算来代替乘法运算

例如:对于表达式x*20,编译器可以利用20=16+4=24+22,将x*20转换为(x<<4)+(x<<2)

①无乘法指令>② 用ALU实现乘法指令>③用乘法器实现乘法指令

整数除法

对于带符号整数来说,n位整数除以n位整数,除-2^(n-1)/-1= 2^(n-1)会发生溢出外,其余情况(除数为0外)都不会发生溢出

正数商取比自身小的最接近整数,负数商取比自身大的最接近整数

编译器在处理一个变量与一个2的幂次形式的整数相除时,常采用右移运算来实现

注意:带符号负整数(天板):加偏移量(2^k-1),然后再右移k 位 ,低位截断

浮点数加减

首先要对阶,小阶向大阶对齐,还要考虑舍入

若运算结果尾数是0,则需要将阶码也置0

附加位

IEEE754规定: 中间结果须在右边加2个附加位

Guard (保护位):在significand右边的位  

Round (舍入位):在保护位右边的位;若没有舍入位,采用就近舍入到偶数

舍入方式:

01:舍;11:入 ;10:(强迫结果为偶数)

因此

  • int->float,不会发生溢出,但可能有数据被舍入
  • int,float->double,能保留精确值
  • double->float,int,可能发生溢出,此外,由于有效位数变少,故可能被舍入
  • float,double->int,因为int没有小数部分,所以数据可能会向0方向被截断

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

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

相关文章

以太网常用协议——ARP协议

文章目录 一、 ARP协议与MAC层1.TCP/IP协议2. MAC地址3. ARP映射4. ARP请求和ARP应答 二、以太网帧格式三、ARP协议1. 以太网ARP通信测试&#xff1a; 以太网使用的协议很多&#xff0c;常用的有ARP、UDP等。 再介绍具体协议之前需要先知道一些基本的概念&#xff1a; 一、 AR…

COB显示屏与GOB显示屏封装方式有哪些不同?

很多用户因为使用场景的特殊性&#xff0c;所以会选择防护能力更强的COB显示屏或者是GOB显示屏&#xff0c;两种产品从名称上看只是有一个字母的悬殊&#xff0c;其实使用的工艺截然不同&#xff0c;GOB显示屏通常是在SMD显示屏的基础上进行升级&#xff0c;而COB显示屏则是完全…

独立开发者系列(15)——git的使用

上一篇14文章触发了敏感话题&#xff0c;直接未过审核&#xff0c;看来技术博客也有敏感点。 大部分情况下&#xff0c;独立项目是你一个人开发&#xff0c;但是当你接的项目比较大的时候&#xff0c;你需要其他人的帮忙&#xff0c;这个时候你要把代码分享给别人。因为如果你…

【分布式数据仓库Hive】Hive的安装配置及测试

目录 一、数据库MySQL安装 1. 检查操作系统是否有MySQL安装残留 2. 删除残留的MySQL安装&#xff08;使用yum&#xff09; 3. 安装MySQL依赖包、客户端和服务器 4. MySQL登录账户root设置密码&#xff0c;密码值自定义&#xff0c;这里是‘abc1234’ 5. 启动MySQL服务 6…

maven设置阿里云镜像源(加速)

一、settings.xml介绍 settings.xml是maven的全局配置文件&#xff0c;maven的配置文件存在三个地方 项目中的pom.xml&#xff0c;这个是pom.xml所在项目的局部配置文件用户配置&#xff1a;${user.home}/.m2/settings.xml全局配置&#xff1a;${M2_HOME}/conf/settings.xml 优…

YOLOV10训练集制作+Train+Val记录

代码地址&#xff1a;THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection (github.com) 一、数据制作 在这篇文章有讲过如何制作数据集及代码实现 YOLOV9训练集制作TrainVal记录_yolov9 train yaml-CSDN博客 二、配置文件 &#xff08;1&#xff09;代码结构…

“私域流量:解锁电商新机遇,共创数字化未来“

一、私域流量的战略意义再探 步入数字化浪潮的深处&#xff0c;流量已成为企业成长不可或缺的血液。与广泛但难以掌控的公域流量相比&#xff0c;私域流量以其独特的专属性和复用潜力&#xff0c;为企业铺设了通往深度用户关系的桥梁。它不仅赋能企业实现精准营销&#xff0c;…

国产跨平台高性能远程控制软件 RayLink,畅享高清流畅远程办公

不管是手机还是电脑&#xff0c;出色的硬件是好用的基础。而其中的软件工具&#xff0c;也是提高效率、减轻负担的好东西。 免费的软件工具众多&#xff0c;当然付费工具也不少。大家可能会觉得正版软件很贵&#xff0c;但国内软件代理商的价格其实很实惠。 本次为大家介绍一…

CF1375D Replace by MEX 题解

题目大意 令 m e x mex mex 为序列中最小的没有出现的数。 给你一个长度为 n n n 的序列 a a a&#xff0c;你可以进行不超过 2 n 2\times n 2n 次操作&#xff0c;使得序列 a a a 单调不降。每次操作你可以选定一个位置 p p p&#xff0c;并将 a p a_p ap​ 赋值为 …

一文看尽AI绘画工具 Stable Diffusion发展史,AI绘画究竟发展到什么地步了?!

01、引言 Stable Diffusion 在短短两年内发布了多个版本。最著名的版本是 1.5 和 SDXL。不过&#xff0c;还有许多其他版本值得一提。让我们一起来探索稳定扩散模型的起源和发展。 闲话少说&#xff0c;我们直接开始吧&#xff01; 02、缺失的SD V1.0版本 Stable Diffusion…

材质相关内容整理 -ThreeJs

在Three.js中&#xff0c;材质是用来定义3D对象外观的关键部分。Three.js支持多种材质文件和类型&#xff0c;每种材质都有其特定的用途和优势。下面简单整理了一下目前Three.js支持的材质文件和类型。 一、Three.js支持的材质文件类型 JPEG (.jpg) 和 PNG (.png) 用途&#x…

iphone新机官网验机流程

若您想购买新款iPhone并在官方网站上验证机器的真实性&#xff0c;可以按照以下流程进行&#xff1a; 打开苹果官方网站&#xff08;https://www.apple.com&#xff09;。在导航栏中选择“iPhone”选项&#xff0c;进入iPhone的产品页面。在页面中找到您想要购买的新款iPhone&…

C语言快速学习笔记

学习网站&#xff1a;C 语言教程 | 菜鸟教程 (runoob.com)C 语言教程 | 菜鸟教程 (runoob.com)C 语言教程 | 菜鸟教程 (runoob.com) 这个网站知识完整&#xff0c;讲解清晰。 在线C语言编程工具&#xff1a;菜鸟教程在线编辑器 (runoob.com) 国外学习网站&#xff1a;C语言介…

【机器学习】机器学习的重要方法——线性回归算法深度探索与未来展望

欢迎来到 破晓的历程博客 引言 在数据科学日益重要的今天&#xff0c;线性回归算法以其简单、直观和强大的预测能力&#xff0c;成为了众多领域中的基础工具。本文将详细介绍线性回归的基本概念、核心算法&#xff0c;并通过五个具体的使用示例来展示其应用&#xff0c;同时探…

使用conda创建虚拟环境,并将虚拟环境加载到jupyter notebook中【已解决】

使用conda创建虚拟环境&#xff0c;并将虚拟环境加载到jupyter notebook中【已解决】

免费分享:2000-2021年全国分省250mNDVI数据集(附下载方法)

NDVI (Normalized Difference Vegetation Index)归一化植被指数&#xff0c;又称标准化植被指数。是目前应用最广泛的植被指数&#xff0c;与植被的分布呈线性相关&#xff0c;是植被生长状态和空间分布的最佳指示因子&#xff0c;也是遥感估算植被覆盖度(FVC&#xff0c;Fract…

深入学习 Kafka(2)- Partition 和 Topic

1. Partition的作用 Topic是逻辑的概念&#xff0c;Partition是物理的概念&#xff1a; Partition 对一个 Topic 的消息进行物理上的分离&#xff0c;让消息可以分布在不同的实体机器上&#xff0c;可以提升系统吞吐量和并行处理能力。每个Partition可以有多个副本&#xff08…

交换机06_vlantrunk

一、虚拟局域网vlan 目的&#xff1a;划分广播域 思科设备如何去配置vlan 创建vlan设置对应的接口模式将接口加入vlan全局模式配置vlan vlan 2 设置接口模式&#xff08;目前需要将接口加入对应vlan&#xff0c;一般用于连接PC&#xff09; en conf t int f0/0 switchport m…

SAP S/4 FICO批量创建银行主数据(银行主数据/账户主数据)开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

开发通用说明 新增程序——批导工具处理逻辑如下:自定义批导程序():点击“执行”按钮若数据错误或重复,先检查导入的银行账号是否已在系统中存在,若已存在则状态显示为红灯,并在消息反馈列提示“该银行已经存在”。查重后若银行账户为新增账户,但导入模板提供的数据有缺…

Spring Boot中获取请求参数的几种方式详解

Spring Boot中获取请求参数的几种方式详解 在Web开发中&#xff0c;处理HTTP请求是一项基本且核心的任务。Spring Boot作为目前最流行的Java Web开发框架之一&#xff0c;提供了多种简便的方式来获取和处理请求参数。本文将深入探讨在Spring Boot中获取请求参数的几种方式&…