【软考中级备考笔记】数据的表示和校验码

2024/2/18 – 数据的表示和校验码 天气:阴雨

春节假期结束后第一个工作日,开始备考中级软件工程师。
希望在今年5月底的软考中取得中级证书
视频地址:https://www.bilibili.com/video/BV1Qc411G7fB

1. 计算机的总体架构

从下图中可以看出,计算机中包含了一下三个层次

  • 最底层的为计算机的硬件部分,对应的知识主要是计算机组成原理
  • 其次是操作系统这一个最大的系统软件,对应了操作系统这门课程
  • 在操作系统之上,是运行的各种应用软件,包含了各种不同的编程语言和数据结构
  • 而位于不同地区的计算机又通过计算机网络连接起来

最终构成了信息化世界。

在这里插入图片描述

2. 数据在计算机中的表示

2.1 进制转换

我们知道,任何数据在计算机中都是以二进制的形式表示的。因此我们需要了解不同进制之间是如何进行转换的。首先来看十进制:

在这里插入图片描述

实际上,根据十进制的规律,我们可以推广到任何其他的进制,下面是将任意进制转换到十进制的公式:

在这里插入图片描述

⚠️⚠️ 这里需要重点注意到是小数部分到进制转换是如何处理的。

下面是一些其他的例子:

在这里插入图片描述

🔔🔔 记住比较常用的2的几次方幂的结果,会极大的提高我们在进制转换时的效率

除了将任意进制转换为十进制意外,还有一些其他常用的进制转换。蔽日下面的二进制转换到八进制和十六进制:

在这里插入图片描述

二进制转换为八进制:

  • 以小数点为中心向两边进行扩充,每三位一组,不满三位的补0。得到的结果就是对应的八进制的数字

同理,二进制转换为十六进制:

  • 以小数点为中心向两边进行扩充,每四位一组,不满四位的补0。得到的结果就是对应的十六进制的数字
2.2 真值和机器数

这个概念相对陌生,实际上非常好理解

  • 真值就是我们平常说的数值
  • 机器数就是数值实际在计算机中存储的形式。数值在计算机中实际存储的形式主要有原码,反码,补码和移码。

此外,还有一个概念是定点数和浮点数

  • 定点数,小数点的位置是固定的,就是我们通常说的小数
  • 浮点数,小数点的位置不固定,和科学技术法非常类似

在这里插入图片描述

在这里插入图片描述

2.3 原码,反码,补码和移码
2.3.1 原码

首先来看原码,原码分为两部分:

  • 符号位:位于最高位。0表示正数,1表示负数
  • 数值位:表示数值的绝对值

在这里插入图片描述

以8位机器码为例,原码的取值范围是:

  • 最小1,1111111 = -127
  • 最大0,1111111 = 127

因此原码的取值范围为[-127,127]

2.3.2 反码

然后我们来看反码。反码的规则是若符号位为0,则反码和原码相同。若符号位为1,则数值位全部取反。因此对于正数而言,反码的原码相同。

在这里插入图片描述

以8位机器码为例,反码的取值范围是:

  • 最小1,1111111 = -127
  • 最大0,1111111 = 127

因此反码的取值范围为[-127,127]

2.3.3 补码

对于补码来说,正数的补码等于原码。而对于负数的补码,等于反码的末尾+1。

也可以直接从原码转换的补码,规则是原码除了符号位以外全部取反,末尾+1

对于补码来说,表示0的方式只有1种:

  • 对于+0,对应的补码为0,0000000
  • 对于-0,对应的原码为1,0000000,则对应的补码为1,1111111 + 1 = 100000000 溢出的数据不算,结果还是00000000

以8位机器码为例,补码的取值范围是:

因此补码的取值范围为[-128,127]

在这里插入图片描述

2.3.4 移码

移码的计算方法是补码的基础上符号位取反。

对于移码来说,可不是正数的原码和移码相同了!!!

在这里插入图片描述

因此移码的取值范围为[-128,127]

2.3.5 小节
  • 对于正数来说,原码,反码和补码均相同。但是移码不遵循这个规律
  • 从0的表示上来看:
    • 原码和反码,0均有两种表示方式
    • 补码和移码,0只有一种表示方式
  • 从取值范围上来看:
    • 原码和反码,[-127,127]
    • 补码和移码,[-128,127]
  • 几种码之间的转换图示如下:

在这里插入图片描述

在这里插入图片描述

3. 校验码

比较常用的校验法如下:

  • 水平奇偶校验码
  • 垂直奇偶校验码
  • 水平垂直奇偶校验码

在这里插入图片描述

比较常用的校验码是海明码,具体定义以及例题如下:

在这里插入图片描述

比较常见的还有CRC循环冗余校验法,视频里面没有提,后续根据例题看一看是否需要了解一下。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【网站项目】155在线考试与学习交流网页平台

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

RocketMQ订阅关系不一致和不能消费时如何排查?

订阅关系不一致 调整任意一个实例的订阅关系和另一个保持一致 消费者不能消费消息 它是最常见的问题之一,也是每个消息队列服务都会遇到的问题 1.确认哪个消息未消费。在这时消费者至少需要手机消息id、消息key、消息发送时间段三者之一 2.确认消息是否发送成功…

6.s081 学习实验记录(九)lock parallelism

文章目录 一、Memory allocator简介提示实验代码实验结果 二、Buffer cache简介提示实验代码实验结果 该实验将重构某些代码以提高并发度。 首先切换到lock分支: git fetchgit checkout lockmake clean 一、Memory allocator 简介 user/kalloctest 这个程序会对…

安装 Windows 7

1.镜像安装 镜像安装:安装Windows 7 2.安装过程(直接以图的形式呈现) 等待安装成功即可

2.18作业

通过字符设备驱动分步注册过程实现LED驱动的编写,编写应用程序测试 头文件 #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio…

Jetpack Compose 第 1 课:可组合函数

点击查看:Jetpack Compose 教程 点击查看:Composetutorial 代码 简介 Jetpack Compose 是用于构建原生 Android 界面的新工具包。它使用更少的代码、强大的工具和直观的 Kotlin API,可以帮助您简化并加快 Android 界面开发。 在本教程中&a…

视觉开发板—K210自学笔记(五)--按键控制LED

本期我们来遵循其他单片机的学习路线开始去用板子上的按键控制点亮LED。那么第一步还是先知道K210里面的硬件电路是怎么连接的,需要查看第二节的文档,看看开发板原理图到底是按键是跟哪个IO连在一起。然后再建立输入按键和GPIO的映射就可以开始变成了。 …

Instagram 账号被封怎么办?如何申诉拿回账号?

不知道各位在玩转海外社媒平台时有没有遇到过Instagram账号异常的情况,比如会出现账号受限、帖子发不出去、账号被封号等情况?Instagram账号如果被封不用马上弃用,我们可以先尝试一下申诉,看看能不能把账号解封。所以今天将会出一篇Instagra…

综合布线实训室建设方案2024

综合布线实训室概述 随着智慧城市的发展,人工智能、物联网、云计算、大数据等新鲜行业的兴起,网络布线系统是现代智慧城市、智慧社区、智能建筑、智能家居、智能工厂和现代服务业的基础设施和神经网络,实践表明网络系统的故障 70%发生在布线…

生成式 AI - Diffusion 模型的数学原理(4)

来自 论文《 Denoising Diffusion Probabilistic Model》(DDPM) 论文链接: https://arxiv.org/abs/2006.11239 Hung-yi Lee 课件整理 文章目录 一、 q ( x t ∣ x t − 1 ) q(x_{t} \mid x_{t-1} &#xff…

JVM常见问题笔记分享

文章目录 1 JVM组成1.1 JVM由那些部分组成,运行流程是什么?1.2 什么是程序计数器?1.3 你能给我详细的介绍Java堆吗?元空间(MetaSpace)介绍 1.4 什么是虚拟机栈1.5 堆和栈的区别1.6 能不能解释一下方法区?1.5.1 概述1.5.2 常量池1…

C++题目打卡2.18

从今天开始我们又将讲4天题目。 题目列表 1.分配T4 2.组合T5 #分配T4 这里很明显是&#xff08;200 110&#xff09; - 330的差值最小。 我们先想到了一个想法就是输入时哪个堆大,加那个。 #include <bits/stdc.h> using namespace std; int main(){int n, ans1 0, …

Win11家庭版,鸿蒙DevEco 模拟器启动失败,成功解决了

本人电脑系统&#xff1a;Windows 11 家庭版 正常安装模拟器后&#xff0c;启动失败&#xff0c;查了各种方法&#xff0c;最终发现是电脑虚拟机未启动导致的。 官方给出的解决方法&#xff08;对我无效&#xff01;&#xff01;&#xff01;&#xff09;&#xff1a; 我的…

MySQL之select查询

华子目录 SQL简介SQL语句分类SQL语句的书写规范SQL注释单行注释多行注释 select语句简单的select语句select的算数运算select 要查询的信息 from 表名;查询表字段查询常量查询表达式查询函数 查询定义别名as安全等于<>去重distinct连接字段concat 模糊查询运算符比较运算…

Linux网络----防火墙

一、安全技术和防火墙 1、安全技术 入侵检测系统&#xff08;Intrusion Detection Systems&#xff09;&#xff1a;特点是不阻断任何网络访问&#xff0c;量化、定位来自内外网络的威胁情况&#xff0c;主要以提供报警和事后监督为主&#xff0c;提供有针对性的指导措施和安…

代码随想录第33天|● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果

文章目录 1005.K次取反后最大化的数组和贪心思路&#xff1a;代码&#xff1a; 34. 加油站思路一&#xff1a;全局贪心代码&#xff1a; 思路二&#xff1a;代码&#xff1a; 135. 分发糖果思路&#xff1a;两边考虑代码&#xff1a; 1005.K次取反后最大化的数组和 贪心思路&am…

Stackoverflow(1)-根据RequestBody的内容来区分使用哪个资源

如果使用Spring&#xff0c;可以通过RequestBody将请求体的json转换为Java对象&#xff0c;但如果URI相同&#xff0c;而请求体的内容不同&#xff0c;应该怎么办&#xff1f;问题来源(stackoverflow)&#xff1a;Spring RequestBody without using a pojo?稍微研究了一下&…

手把手一起开发SV4E-I3C设备(三)

JEDEC DDR5 SPD Hub Devices例程 为进一步方便程序开发&#xff0c;使用vscode开发程序&#xff0c;IntrospectESP_23.3.0软件调用运行&#xff0c;如图所示&#xff0c;双击UTILITY区域的PythonModule&#xff0c;自动生成一个py文件&#xff0c;可以给该模块重命名。例如重命…

重学Java 16.面向对象.4.对象数组

一、对象数组 1.需求&#xff1a;定义一个长度为3的数组&#xff0c;存储3个person对象&#xff0c;遍历数组&#xff0c;将三个person对象中的属性值获取出来 public class Person {private String name;private int age;public Person(String name,int age) {this.name name…

Yii2项目使用composer异常记录

问题描述 在yii2项目中&#xff0c;使用require命令安装依赖时&#xff0c;出现如下错误提示 该提示意思是&#xff1a;composer运行时&#xff0c;执行了yiisoft/yii2-composer目录下的插件&#xff0c;但是该插件使用的API版本是1.0&#xff0c;但是当前的cmposer版本提供的…