软件设计师速通其一:计算机内部数据表示

  • 考试资料推荐 ,这也是大部分图片的出处。本文章主要将视频原本讲的不详细、不便于理解的东西摆开揉碎了给到读者。相信本文能帮您更好更快的学习知识。本文也是您考前快速复习的不二之选。
  • 本文会用星星来表示每个考点的重要性,其中一颗★表示课外拓展,两颗★★表示了解,三颗★★★表示重点。没有星表示重点之下,了解之上。

考试介绍

考试时间与网址

名称 级别 所属考试 考试形式 考试时间
软件设计师 中级资格 全国计算机技术与软件专业技术资格(水平)考试 计算机化考试 上半年:5月 下半年:11月

考试内容

计算机大概认识

进制转化

任意进制与十进制转化

二进制转化为十六进制

计算机内数据表示

原码、反码、补码与移码

  • 在这里机器字长为八位,八位字长被分为一位符号位和七位数值位。符号位在开头,符号位为0则这个数是正数。
  • 正数反码不变,负数方码取反
  • 正数依然不变,负数补码为反码末尾加一。


  • 原码反码取值范围相同,补码移码范围相同
内容 原码 反码 补码 移码
定义 符号位加上数值的绝对值的二进制表示 正数同原码,负数符号位不变,数值位取反 正数同原码,负数符号位不变,数值位取反后+1 在补码基础上符号位取反(正数+0,负数+2^(n-1))
适用范围 人类阅读和理解 中间过渡形式,计算机减法运算中使用 计算机内部统一的运算编码 浮点数阶码表示
处理符号 符号位0表示正数,1表示负数 同原码 同原码 移码后符号位为0(统一为无符号数)
主要特点 直观,便于理解 负数仅数值位取反 解决了0有两种表示(+0、-0)的问题 便于浮点数大小比较
数值大小关系 与实际值一致 正负数对应位逐位相反 补码可直接用于加减运算 符号位统一,按无符号数处理

假设以8位二进制表示数值**-5**:

编码方式 二进制表示 说明
原码 1 0000101 符号位1表示负,后面是5的二进制
反码 1 1111010 数值部分取反(0变1,1变0)
补码 1 1111011 反码基础上加1
移码 0 1111011 补码符号位取反(符号位0表示偏移后正数)
为什么要有这么多码?★
  • 因为计算机只有用电流通过与否表示的0和1,使用一堆0与1想要算数,就需要上面各种码。比如原码的反码相加,可以求除两者相减的结果,其他码也是如此

计算:5−3

  • 5 的原码:0 0000101 → 反码:0 0000101(正数反码同原码)
  • 3 的原码:0 0000011 → -3的反码:1 1111100

然后进行加法:

复制代码
  0 0000101
+ 1 1111100
------------
  0 0000001 (产生了进位,回补进位)
+         1
------------
  0 0000010

定点数与浮点数

定点整数

如8位定点整数,可以表示 −128∼127(补码表示)。

定点小数 (也叫定点小数格式、定点小数点位置):

例如固定小数点在第4位,数值 0001.0100 表示 1.25。

小数点位置固定,程序或硬件内部默认,不需单独存储小数点

  • 6.75=1.1011×2^2

其中:

  • 尾数(M):1.1011
  • 基数(R):2(表示该数为二进制数)
  • 阶码(E):2

校验码★★

  • 奇偶校验的意思就是添加一位校验位,然后统计除校验位以外的01个数。对于奇校验:如果1的个数是偶数,则校验位为1,使总数变成奇数;如果1的个数已经是奇数,则校验位为0,保持为奇数。

  • CRC算法示例

假设我们使用一个简单的CRC-8算法,生成多项式为:

待校验数据为 101101,我们将数据与多项式做CRC计算。

  • 步骤:
    1. 数据101101与8个零一起构成 10110100000000(这就是填充后的数据)。
    2. 用CRC多项式做除法,计算余数。
    3. 余数就是CRC校验码。

接收方接收到数据后,进行相同的操作,检查余数。如果余数为零,则数据无错误;否则说明数据发生了错误。

海明码★★★

  • 海明码作用与关系是重点

你好,我是Qiuner. 为帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner⭐ gitee https://gitee.com/Qiuner 🌹

如果本篇文章帮到了你 不妨点个 吧~ 我会很高兴的 😄 (^ ~ ^) 。想看更多 那就点个关注吧 我会尽力带来有趣的内容 😎。

代码都在github或gitee上,如有需要可以去上面自行下载。记得给我点星星哦😍

如果你遇到了问题,自己没法解决,可以去我掘金评论区问。私信看不完,CSDN评论区可能会漏看 掘金账号 https://juejin.cn/user/1942157160101860 掘金账号
更多专栏:

掘金账号 CSDN账号
感谢订阅专栏 三连文章

相关推荐
layman052835 分钟前
node.js 实战——mongoDB
数据库·mongodb·node.js
爱可生开源社区1 小时前
SQLShift 全新上线:Oracle→OceanBase 迁移利器
数据库
群联云防护小杜2 小时前
云服务器被黑客攻击应急响应与加固指南(上)
运维·服务器·人工智能·tcp/ip·自动化·压力测试
wkj0012 小时前
java 和 C#操作数据库对比
java·数据库·c#
编程在手天下我有2 小时前
Redis 数据类型全览:特性、场景与操作实例
数据库·redis·数据结构与算法
左灯右行的爱情2 小时前
缓存并发更新的挑战
jvm·数据库·redis·后端·缓存
老秦包你会2 小时前
Linux课程五课---Linux进程认识1
linux·运维·服务器
等猪的风2 小时前
openwrt作旁路由时的几个常见问题 openwrt作为旁路由配置zerotier 图文讲解
运维·服务器·网络
千码君20163 小时前
什么是数据链路层的CRC检测以及为什么要放到帧尾?
服务器·网络·网络协议·以太网·奇偶校验·crc检测·以太网帧