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

网站建设客户服务/佛山seo培训机构

网站建设客户服务,佛山seo培训机构,官方网站建设推广,如何开发属于自己的小程序复习本章时,思考以下问题: 1)在计算机中,为什么要采用二进制来表示数据?2)计算机在字长足够的情况下能够精确地表示每个数吗?若不能,请举例说明。3)字长相同的情况下,浮点数和定点数的表示范围…

 复习本章时,思考以下问题:

  • 1)在计算机中,为什么要采用二进制来表示数据?
  • 2)计算机在字长足够的情况下能够精确地表示每个数吗?若不能,请举例说明。
  • 3)字长相同的情况下,浮点数和定点数的表示范围与精度有什么区别?
  • 4)用移码表示浮点数的阶码有什么好处?

目录

 1、进制与编码

1.1 进位计数法

1.2 不同进制数之间的相互转换

(1)二进制混合数转化为八进制或16进制

(2) 十进制数转换为任意进制数

1.3 定点数的编码表示

1.3.1 原码

1.3.2 反码

1.3.3 补码

1.3.4 移码

2、运算方法和运算电路

3、整数的表示和运算

4、 浮点数的表示与运算

 5、校验码(数据校验)

5.1 奇偶校验码

5.2海明校验码

5.3 循环冗余校验码(CRC)

2、数据的表示与运算

 2.1、进制与编码

 

2.1.1 进位计数法

常用的进位计数法有十进制、二进制、八进制、十六进制等。十六进制每个 数位可取0〜9、A、B、C、D、E、F中的任意一个,其中A、B、C、D、E、F分别表示 10〜15。

八进制数字通常以前缀 "0"(零)加上数字表示,例如,八进制数 12 表示为 014。在JavaScript中,你可以使用前缀 "0o" 或 "0O" 来表示八进制数。例如:0o14

十六进制数字通常以前缀 "0x" 或 "0X" 开头表示,例如,十六进制数 1A 表示为 0x1A

 

2.1.2 不同进制数之间的相互转换

(1)二进制混合数转化为八进制或16进制

对于一个二进制混合数(既包含整数部分,又包含小数部分),在转换时应以小数点为界。 其整数部分,从小数点开始往左数,将一串二进制数分为3位(八进制)一组或4位(十六进制) 一组,在数的最左边可根据需要加“0”补齐;对于小数部分,从小数点开始往右数,也将一串 二进制数分为3位一组或4位一组,在数的最右边也可根据需要加“0”补齐。

(2) 十进制数转换为任意进制数

 

 (3)BCD码:二进制编码的十进制数

2.3 定点数的编码表示

定点数编码表示法主要有以下4种:原码、 补码、反码和移码。

1.3.1 原码

用机器数的最高位表示数的符号,其余各位表示数的绝对值。

真值零的原码表示有正零和负零两种形式,即[+0]原= 00000和[-0]原= 10000

1.3.2 反码

正数反码的定义和相应的补码(或原码)表示相同。负数反码的定义在绝对值按位求反。

0的表示不唯一(即存在正负0);

1.3.3 补码

对于正数,与原码的方式一样。对于负数,符号位取1,其余各位由真 值“各位取反,末位加1”得到。补码转换为真值,若符号位为0,与原码的方式一样。若符号位为1,真值的符号为负,数值部分各位由补码“各位取反,末位加1”得到。

 0的表示唯一

1.3.4 移码

移码就是在真值X上加上一个常数(偏置值)。如果机器字长为n,偏移值为2^{n-1}

 

2.4、运算方法和运算电路

(有需要再弄懂)

此ALU的核心是带标志加法器

2.5、整数的表示和运算

(有需要再弄懂)

有符号数和无符号数的转换

将short int强制转换为unsigned short 只改变数值,而两个变量对应的每位都是一样的。

不同字长整数之间的转换,当大字长变量向小字长变量强制类型转换时,系统把多余的高位部分直接截 断,低位直接赋值,因此也是一种保持位值的处理方法。而短字长到长字长的转换,在位值相等的条件下还要补充高位的符号位,可以理解为数值 的相等。

2.6、 浮点数的表示与运算

 浮点数的运算:1. 对阶,2. 尾数求和,3. 规格化,4. 舍人,5. 溢出判断

 2.7、校验码(数据校验)

  • 数据校验原因:为减少和避免数据在计算机系统运行或传送过程中发生错误,在数据的编码上提供了检错和纠错的支持。
  • 数据校验码的定义:能够发现某些错误或具有自动纠错能力的数据编码;
  • 数据校验的基本原理是扩大码距;码距为任意两个合法码之间不同的二进制位的最少位数;仅有一位不同时,称其码距为1。码距大于等于2的数据校验码开始具有检错的能力。码距越大,检错、纠错能力越强。

2.7.1、 奇偶校验码

  • 原编码上加一个校验位,码距等于2!一般校验位设置在原编码的最左边或最右边
  • 奇校验码:整个校验码(信息位+校验位)中1的个数位奇数
  • 偶校验码:整个校验码(信息位+校验位)中1的个数位偶数
  • 只能发现奇数个错误,不能纠错。
  • (1)奇校验
 (2)偶校验

2.7.2、海明校验码

在奇偶校验的基础上增加校验位而得;具有检错和纠错的能力;

设K为有效信息的位数,r为校验位的位数,则整个码字的位数N应满足不等式:N=K+r≦2r-1   通常称为(N,K)海明码设某(7,4)海明码表示的码字长度为   7   位,校验位数为     3 位。

 

  • 若S1S2S3=000,则说明无错,否则说明出错。这个数的值就是出错的位置,如S1S2S3=010,表示第010位出错,即H2出错,直接将该位取反就可以达到纠错的目的。

2.7.3、 循环冗余校验码(CRC)

在K位信息位后拼接R位检验位,组成CRC码,这种编码也称(N,R)码

通过模2的除法运算建立数据信息和校验位之间的约定关系;具有很强的检错纠错能力。
通过例题来理解

例题: 设生成多项式G(x)=X^3+X^2+1 ,信息码为 101001 ,求对应的CRC码 。

  •  首先,发送端和接受端会有一个生成多项式G(x)约定,生成多项式G(x)的最高次幂为R。任意一个二进制数码都可用一个系数为0或1的多项式与之对应。比如:二进制数码 1101 对应的G(x)=1*X^3+1*X^2+0*X^1+1*X^0= X3+X2+1  检验位为3
  • 在发送端,将要传送的K位二进制信息码左移R位,低位补0。将它与生成多项式G(x)所对应的的二进制数码进行模2除法,除数位多项式系数( 1101),产生余数( 3位检验位)位一个R位检验码,并附在信息码后,构成一个新的二进制码(CRC)码,共K+R位。

 

  • 接收端收到CRC码后,用生成的CRC码除以生成多项式G(x)所对应的的二进制数码,若余数为0,则信息码在传输过程中没有产生错误,数据正确。
  • 若接受到的CRC码为C9C8C7C6C5C4C3C2C1= 101001011,除以G(x)所对应的二进制码1101得到余数为010,不为0,说明数据在传输过程中产生错误。010=2(10)说明C2出错,将C2取反即可纠正错误。

2.8、复习

2.8.1、为什么要采用二进制来表示数据?

采用二进制,只有0和1两个状态,能够表示0、1两种状态的电子器件很多。而且简化,电平变化明显。

2.8.2、计算机在字长足够的情况下能够精确地表示每个数吗?若不能,请举例说明。

计算机采用二进制来表示数据,在字长足够时,可以表示任何一个整数。

而二进制表示小数,即使字长很长,也不可能精确表示出所有小数,只能无限逼近。例如0.1就无法用二进制精确地表示。

2.8.3、字长相同的情况下,浮点数和定点数的表示范围与精度有什么区别?

字长相同时,浮点数取字长的一部分作为阶码,所以表示范围比定点数要大,而取一部分作为阶码也就代表着尾数部位的有效位数减少,而定点数字长的全部位都用来表示数值本身,精度要比同字长的浮点数更大

编码位数一定,编码出来的数据个数就是一定的。m位编码只能表示2m个数,所以对于相同位数的定点数和浮点数来说,可表示的数据个数应该一样多。

2.8.4、用移码表示浮点数的阶码有什么好处?

移码的两个好处
浮点数进行加减运算时,时常要比较阶码的大小,相对于原码和补码,移码比较大小更方便
②检验移码的特殊值(0和max)时比较容易。

2.8.5、如何表示一个数值数据?计算机中的数値数据都是二进制数吗?

计算机中的数值数据虽然都用二进制来编码表示,但不全是二进制数,也有用十进制数(二进制编码的十进制数)表示的

2.8.6、在高级语言编程中所定义的 unsigned/short/int/long/float/double型数据是怎么表示的?什么称为无符号整数的“溢出”?

unsigned型数据就是无符号整数,不考虑符号位。直接用全部二进制位对数值进行编码得到的就是无符号数,一般都用补码表示。

int型数据就是定点整数,一般用补码表示。int型数据的位数与运行平台和编译器有关,一般是32位或16位。例如,真值是-12的int型整数,在机器内存储的机器数(假定用32位寄存器寄存)是1111-1111-1111-1111-1111-1111-1111-0100

long型数据和short型数据也都是定点整数,只是位数不同,分别是长整型和短整型数,通常用补码表示。

float型数据是用来表示实数的浮点数。现代计算机用IEEE754标准表示浮点数,其中32位单精度浮点数就是float型,64位双精度浮点数就是 double型。

需要注意的是,C语言中的int型和 unsigned型变量的存储方式没有区别,都按照补码的形式存储,在不溢出范围内的加减法运算也是相同的,只是int型变量的最高位代表符号位,而unsigned型中的最高位表示数值位,两者在C语言中的区别体现在输出时到底是采用%d还是采用%u。

对于无符号定点整数来说,若寄存器位数不够,则计算机运算过程中一般保留低n位,舍弃高位。这样,会产生以下两种结果。
①保留的低n位数不能正确表示运算结果。在这种情况下,意味着运算的结果超出了计算机所能表达的范围,有效数值进到了第n+1位,称此时发生了“溢出”现象
②保留的低n位数能正确表达计算结果,即高位的舍去并不影响其运算结果。

如何判断一个浮点数是否是规格化数?

为了使浮点数能尽量多地表示有效位数,一般要求运算结果用规格化数形式表示“规格化浮点数的尾数小数点后的第一位一定是个非零数。因此,对于原码编码的尾数来说,只要看尾数的第一位是否为1就行

2.8.7、浮点数如何进行舍入?

舍入方法选择的原则是:①尽量使误差范围对称,使得平均误差为0,即有舍有入,以防误差积累。②方法要简单,以加快速度。
IEEE754有4种舍入方式。
①就近舍入:舍入为最近可表示的数,若结果值正好落在两个可表示数的中间,则一般选择舍入结果为偶数。
②正向舍入:朝+∞方向舍入,即取右边的那个数
③负向舍入:朝-∞方向舍入,即取左边的那个数。
④截去:朝0方向舍入,即取绝对值较小的那个数

2.8.8、代计算机中是否要考虑原码加减运算?如何实现?

因为现代计算机中浮点数采用IEEE754标准,所以在进行两个浮点数的加减运算时,必须考虑原码的加减运算,因为IEEE754规定浮点数的尾数都用原码表示。
原码的加减运算可以有以下两种实现方式
1)转换为补码后,用补码加减法实现,结果再转换为原码。
2)直接用原码进行加减运算,符号和数值部分分开进行(具体过程见原码加减运算部分)。
 

相关文章:

计算机组成学习-数据的表示和运算总结

复习本章时,思考以下问题: 1)在计算机中,为什么要采用二进制来表示数据?2)计算机在字长足够的情况下能够精确地表示每个数吗?若不能,请举例说明。3)字长相同的情况下,浮点数和定点数的表示范围…...

目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】机器视觉(基础篇)(八)

目录 前言 知识储备 机器视觉学习路线 视觉算法流程...

【4】基于多设计模式下的同步异步日志系统-框架设计

7. 日志系统框架设计 本项⽬实现的是⼀个多日志器日志系统,主要实现的功能是让程序员能够轻松的将程序运行日志信息落地到指定的位置,且⽀持同步与异步两种方式的日志落地方式。 项目的框架设计将项目分为以下几个模块来实现。 日志等级模块 日志等级模…...

Jupyter Markdown 插入图片

首先截图 注意 这一步是关键的!! 它需要使用电脑自带的截图,用qq啊vx啊美图秀秀那些都不行哦。 截图之后复制: 然后快捷键粘贴到jupyter里面,它会生成一段代码(没有代码就是说截图形式不对)&a…...

web自动化 -- pyppeteer

由于Selenium流行已久,现在稍微有点反爬的网站都会对selenium和webdriver进行识别,网站只需要在前端js添加一下判断脚本,很容易就可以判断出是真人访问还是webdriver。虽然也可以通过中间代理的方式进行js注入屏蔽webdriver检测,但…...

Java 数组另类用法(字符来当数组下标使用)

一、原因 看力扣的时候发现有位大佬使用字符来当数组下标使用。 class Solution {public int lengthOfLongestSubstring(String s) {int result 0;int[] hash new int[130];int i 0;for(int j 0; j < s.length(); j) {while(hash[s.charAt(j)] > 0) {hash[s.charAt…...

error转string

1 概述 在golang中&#xff0c;error类型是非常常见的一种数据类型。在开发过程中&#xff0c;经常会遇到需要将error类型转换成string类型的情况。本文主要介绍几种常见的golang error转string的方法。 2 使用Error()函数 在golang中&#xff0c;Error()函数是error类型的一…...

Android监听用户的截屏、投屏、录屏行为

Android监听用户的截屏、投屏、录屏行为 一.截屏 方案一&#xff1a;使用系统广播监听截屏操作 ​ 从Android Q&#xff08;10.0&#xff09;开始&#xff0c;Intent.ACTION_SCREEN_CAPTURED_CHANGED字段不再被支持。这是因为Google在安卓10 中引入了一个新的隐私限制&#…...

MATLAB算法实战应用案例精讲-【路径规划】 图搜索算法

目录 前言 几个高频面试题目 运动规划、路径规划、轨迹规划对比 1. 运动规划 2. 路径规划VS轨迹规划...

Elasticsearch-Kibana使用教程

1.索引操作 1.1创建索引 PUT /employee {"settings": {"index": {"refresh_interval": "1s","number_of_shards": 1,"max_result_window": "10000","number_of_replicas": 0}},"mappi…...

mysql(八)docker版Mysql8.x设置大小写忽略

Mysql 5.7设置大小写忽略可以登录到Docker内部&#xff0c;修改/etc/my.cnf添加lower_case_table_names1&#xff0c;并重启docker使之忽略大小写。但MySQL8.0后不允许这样&#xff0c;官方文档记录&#xff1a; lower_case_table_names can only be configured when initializ…...

KALI LINUX攻击与渗透测试

预计更新 第一章 入门 1.1 什么是Kali Linux&#xff1f; 1.2 安装Kali Linux 1.3 Kali Linux桌面环境介绍 1.4 基本命令和工具 第二章 信息收集 1.1 网络扫描 1.2 端口扫描 1.3 漏洞扫描 1.4 社交工程学 第三章 攻击和渗透测试 1.1 密码破解 1.2 暴力破解 1.3 漏洞利用 1.4 …...

vue之mixin混入

vue之mixin混入 mixin是什么&#xff1f; 官方的解释&#xff1a; 混入 (mixin) 提供了一种非常灵活的方式&#xff0c;来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时&#xff0c;所有混入对象的选项将被“混合”进入该组件本身的…...

[ffmpeg] find 编码器

背景 整理 ffmpeg 中&#xff0c;如何通过名字或者 id 找到对应编码器的。 具体流程 搜索函数 avcodec_find_encoder // 通过 ID 搜索编码器 avcodec_find_encoder_by_name // 通过名字搜索编码器源码分析 ffmpeg 中所有支持的编码器都会注册到 codec_list.c 文件中&…...

Android CardView基础使用

目录 一、CardView 1.1 导入material库 1.2 属性 二、使用(效果) 2.1 圆角卡片效果 2.2 阴影卡片效果 2.3 背景 2.3.1 设置卡片背景(app:cardBackgroundColor) 2.3.2 内嵌布局&#xff0c;给布局设置背景色 2.4 进阶版 2.4.1 带透明度 2.4.2 无透明度 一、CardView 顾名…...

云原生Kubernetes系列 | init container初始化容器的作用

云原生Kubernetes系列 | init container初始化容器的作用 kubernetes 1.3版本引入了init container初始化容器特性。主要用于在启动应用容器(app container)前来启动一个或多个初始化容器,作为应用容器的一个基础。只有init container运行正常后,app container才会正常运行…...

汽车电子芯片介绍之Aurix TC系列

Infineon的AURIX TC系列芯片是专为汽车电子系统设计的&#xff0c;采用了32位TriCore处理器架构。该系列芯片具有高性能、低功耗和丰富的外设接口&#xff0c;适用于广泛的汽车电子应用。以下是AURIX TC系列芯片的主要特性&#xff1a; 1. 高性能处理器 AURIX TC芯片采用了高…...

Linux 设置程序开机自启动的方法

目录 前言开机自启动参考 前言 CentOS Linux release 7.9.2009 (Core) 开机自启动 shell> vim /etc/rc.d/rc.local添加开机后执行的命令 sh /xxx/xxx.sh参考 https://www.cnblogs.com/xlmeng1988/archive/2013/05/22/3092447.html...

java企业财务管理系统springboot+jsp

1、基本内容 &#xff08;1&#xff09;搭建基础环境&#xff0c;下载JDK、开发工具eclipse/idea。 &#xff08;2&#xff09;通过HTML/CSS/JS搭建前端框架。 &#xff08;3&#xff09;下载MySql数据库&#xff0c;设计数据库表&#xff0c;用于存储系统数据。 &#xff08;4…...

【Windows】如何实现 Windows 上面的C盘默认文件夹的完美迁移

如何实现 Windows 上面的C盘默认文件夹的完美迁移 1. 遇到的问题 在我想迁移C盘的 下载 和 视频 文件夹的时候&#xff0c;遇到了这样的问题&#xff0c;在迁移之后&#xff0c;我显卡录像的视频还是保存到了C盘默认位置里&#xff0c;以及我迁移了 下载 之后下载的盘依然是在…...

kubernetes七层负载Ingress搭建(K8S1.23.5)

首先附上K8S版本及Ingress版本对照 Ingress介绍 NotePort&#xff1a;该方式的缺点是会占用很多集群机器的端口&#xff0c;当集群服务变多时&#xff0c;这个缺点就愈发的明显(srevice变多&#xff0c;需要的端口就需要多) LoadBalancer&#xff1a;该方式的缺点是每个servi…...

二维粒子群算法航线规划

GitHub - gabrielegilardi/PathPlanning: Implementation of particle swarm optimization (PSO) for path planning when the environment is known....

uniapp长按图片识别二维码

引用&#xff1a;https://blog.csdn.net/weixin_48596030/article/details/125405779 <image :src"url" mode"widthFix" click.self"previewImage" show-menu-by-longpress"true" style"width: 350rpx;"></image…...

智能优化算法应用:基于和声算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于和声算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于和声算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.和声算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…...

Gitee拉取代码报错You hasn‘t joined this enterprise! fatal unable to access

文章目录 一、问题二、解决2.1、进入**控制面板**2.2、进入**用户账户**2.3、进入**管理Windows凭据**2.4、**普通凭据**2.4.1、添加2.4.2、编辑 2.5、重新拉取|推送代码 三、最后 一、问题 Gitee拉取仓库代码的时候报错You hasnt joined this enterprise! fatal unable to ac…...

算法通关村第十六关-白银挑战滑动窗口经典题目

大家好我是苏麟 , 今天带来滑动窗口经典的一些题目 . 我们继续来研究一些热门的、高频的滑动窗口问题 大纲 最长子串专题无重复字符的最长子串 长度最小的子数组盛最多水的容器 最长子串专题 无重复字符的最长子串 描述 : 给定一个字符串 s &#xff0c;请你找出其中不含有重…...

springBoot整合task

springBoot整合task 文章目录 springBoot整合task开开关设置任务&#xff0c;并设置执行周期定时任务的相关配置 开开关 设置任务&#xff0c;并设置执行周期 Component public class MyBean {Scheduled(cron "0/1 * * * * ?")public void print(){System.out.prin…...

逻辑漏洞测试靶场实验

任务一&#xff1a; 突破功能限制漏洞&#xff0c;要求突破查询按钮disabled限制&#xff0c;获取编号&#xff1a;110010的查询内容&#xff08;弹框中的flag&#xff09; 任务二&#xff1a;用户信息泄露漏洞&#xff0c;通过回显信息&#xff0c;以暴力破解法方式猜测系统中…...

【电机控制】PMSM无感foc控制(六)相电流检测及重构 — 双电阻采样、三电阻采样

0. 前言 目前&#xff0c;永磁同步电机的电流信号采样方法应用较多的是分流电阻采样&#xff0c;包括单电阻、双电阻以及三电阻采样法。其中&#xff0c;单电阻采样上一章节已经讲解&#xff0c;这章讲双电阻以及三电阻电流采样法。 1. 双电阻采样 1.1 双电阻采样原理 双电阻采…...

Boost:多进程间消息队列通信

Boost封装了消息队列,以便于多进程间传递消息: 1.创建消息队列: #include <boost/interprocess/ipc/message_queue.hpp> message_queue mq (create_only/open_only/create_or_open ,"message_queue" //消息队列的名字 ,100 …...