计算机系统基础(二)
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方向被截断
相关文章:
计算机系统基础(二)
1.数值数据的表示 为什么采用二进制? 二进制只有两种基本状态,两个物理器件就可以表示0和1二进制的编码、技术、运算规则都很简单0和1与逻辑命题的真假对应,方便通过逻辑门电路实现算术运算 数值数据表示的三要素 进位记数制(十…...
vue根据文字长短展示跑马灯效果
介绍 为大家介绍一个我编写的vue组件 auto-marquee ,他可以根据要展示文本是否超出展示区域,来判断是否使用跑马灯效果,效果图如下所示 假设要展示区域的宽度为500px,当要展示文本的长度小于500px时,只会展示文本&…...
leetcode-21-回溯-全排列及其去重
一、[46]全排列 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3]输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 其中,不需要使用startIndex used数组,其实就是记录此时path里都有哪些元素…...
如何根据两个关键字查询报错日志的位置
1、查找两个关键字(无顺序要求) 如果你不关心这两个关键字出现的顺序,你可以使用egrep(等同于grep -E)或grep的-E选项来启用扩展正则表达式,并使用管道(|)来组合两个搜索模式。 gr…...
短视频预算表:成都柏煜文化传媒有限公司
短视频预算表:精打细算,打造高质量视觉盛宴 在数字时代,短视频以其独特的魅力迅速占领了互联网内容的半壁江山,成为品牌宣传、文化传播乃至个人表达的重要载体。然而,每一个成功的短视频背后,都离不开一份…...
【Llama 2的使用方法】
Llama 2是Meta AI(Facebook的母公司Meta的AI部门)开发并开源的大型语言模型系列之一。Llama 2是在其前身Llama模型的基础上进行改进和扩展的,旨在提供更强大的自然语言处理能力和更广泛的应用场景。 以下是Llama 2的一些关键特性和更新点&am…...
mysql-sql-第十三周
学习目标: sql 学习内容: 37.查询各科成绩最高分、最低分和平均分: 以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率 及格为>60,中等为:70-80,优良为:80-90,优秀…...
【Android】ViewPage2嵌套Fragment+SeekBar横向滑动冲突
问题描述 ViewPage2嵌套FragmentSeekBar,拖动SeekBar的进度条时,触发ViewPage2的滑动。 解决方案: 方案一:通过事件总线ViewPage2的isUserInputEnabled属性 子Fragment: class SeekBarFragment : Fragment() {priv…...
【408考点之数据结构】图的遍历
图的遍历 图的遍历是指从图中的某个顶点出发,按照一定的规则访问图中所有顶点,并使每个顶点仅被访问一次。图的遍历包括两种主要方法:深度优先搜索(DFS)和广度优先搜索(BFS)。这两种遍历方法在…...
自动驾驶---Motion Planning之多段五次多项式
1 前言 在之前的博客系列文章中和读者朋友们聊过Apollo的 Motion Planning方案: 《自动驾驶---Motion Planning之LaneChange》 《自动驾驶---Motion Planning之Path Boundary》 《自动驾驶---Motion Planning之Speed Boundary》 《自动驾驶---Motion Planning之轨迹Path优化》…...
Linux基础IO操作详解
C文件IO相关接口 fopen函数 pathname: 要打开的文件名字符串mode: 访问文件的模式 模式描述含义“r”读文件不存在失败返回null“r”读写文件不存在打开失败返回null,文件存在则从头开始覆盖现有的数据(不会清空数据)“w”写文件不存在创建…...
轻松掌握:Hubstudio指纹浏览器如何接入IPXProxy代理IP
代理IP对于保护个人和企业网络安全起到了至关重要的作用,然而在需要多个工作的时候,就需要搭配指纹浏览器来使用。其中Hubstudio指纹浏览器就可以模拟多个浏览器环境,然而有些用户不知道如何将Hubstudio和代理IP一起使用,下面以…...
React小记(五)_Hooks入门到进阶
React 16.8 版本 类组件 和 函数组件 两种组件共存,到目前 React 18 版本,官方已经不在推荐使用类组件,在函数组件中 hooks 是必不可少的,它允许我们函数组件像类组件一样可以使用组件的状态,并模拟组件的生命周期等一…...
使用工业自动化的功能块实现大语言模型应用
大语言模型无所不能? 以chatGPT为代表的大语言模型横空出世,在世界范围内掀起了一场AI革命。给人的感觉似乎大模型语言无所不能。它不仅能够生成文章,图片和视频,能够翻译文章,分析科学和医疗数据,甚至可以…...
PPT文件中,母版视图与修改权限的区别
在PPT(PowerPoint)制作过程中,母版视图和修改权限是两个重要的概念,它们各自在演示文稿的编辑、管理和分发中扮演着不同的角色。本文将从定义、功能、使用场景及区别等方面详细探讨PPT母版视图与修改权限的异同。 PPT母版视图 定…...
php简单的单例模式
本文由 ChatMoney团队出品 单例模式是一种常用的设计模式,它的核心思想是确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。在 PHP 中实现单例模式通常有三种形式:饿汉式(Eager)、懒汉式(Lazy&…...
【面试题】IPS(入侵防御系统)和IDS(入侵检测系统)的区别
IPS(入侵防御系统)和IDS(入侵检测系统)在网络安全领域扮演着不同的角色,它们之间的主要区别可以归纳如下: 功能差异: IPS:这是一种主动防护设备,不仅具备检测攻击的能力&…...
宠物博主亲测养宠好物安利,口碑好的狗毛空气净化器推荐
作为一名6年资深铲屎官,一到春季换季就开始各种疯狂打喷嚏、全身过敏红肿,这是因为宠物在换季的时候就疯狂掉毛,家里就想下雪一样,空气中都是宠物浮毛。而宠物毛上附带的细菌会跟随浮毛被人吸入人体,从而产生打喷嚏、过…...
常用工具类
计算当天开始时间和结束时间 DateTime date DateUtil.date(); String startDateStr DateUtil.formatDateTime(DateUtil.beginOfDay(date)); String endDateStr DateUtil.formatDateTime(DateUtil.beginOfDay(DateUtil.offsetDay(date,1))); params.put("startDate&quo…...
【数据库原理】总结(期末版)
题型关系范式题[数据库原理]关系范式总结(自用)-CSDN博客事务分析题[数据库原理]事务-CSDN博客Sql题 MySQL:MySQL基本语法 Oracle:Oracle基本语法 关系代数[数据库原理]关系代数-CSDN博客 sql里面主要是考增删改查授权撤销权限等内容&#…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
Android写一个捕获全局异常的工具类
项目开发和实际运行过程中难免会遇到异常发生,系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler,它是Thread的子类(就是package java.lang;里线程的Thread)。本文将利用它将设备信息、报错信息以及错误的发生时间都…...
