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

2024-02-19 08:12

本文主要是介绍【软考中级备考笔记】数据的表示和校验码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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循环冗余校验法,视频里面没有提,后续根据例题看一看是否需要了解一下。

这篇关于【软考中级备考笔记】数据的表示和校验码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/724059

相关文章

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Mysql如何将数据按照年月分组的统计

《Mysql如何将数据按照年月分组的统计》:本文主要介绍Mysql如何将数据按照年月分组的统计方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql将数据按照年月分组的统计要的效果方案总结Mysql将数据按照年月分组的统计要的效果方案① 使用 DA

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4