admin管理员组

文章数量:1437120

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

计算机大概认识

进制转化

任意进制与十进制转化
二进制转化为十六进制

计算机内数据表示

原码、反码、补码与移码
  • 在这里机器字长为八位,八位字长被分为一位符号位和七位数值位。符号位在开头,符号位为0则这个数是正数。
image-20250427215117489
  • 正数反码不变,负数方码取反
image-20250427215308625
  • 正数依然不变,负数补码为反码末尾加一。
image-20250427220416441
image-20250427220605652
  • 原码反码取值范围相同,补码移码范围相同

内容

原码

反码

补码

移码

定义

符号位加上数值的绝对值的二进制表示

正数同原码,负数符号位不变,数值位取反

正数同原码,负数符号位不变,数值位取反后+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

然后进行加法:

代码语言:javascript代码运行次数:0运行复制
  0 0000101
+ 1 1111100
------------
  0 0000001 (产生了进位,回补进位)
+         1
------------
  0 0000010

定点数与浮点数

image-20250427221010069

定点整数: 如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校验码。

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

海明码★★★
image-20250427223107958
  • 海明码作用与关系是重点
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-04-28,如有侵权请联系 cloudcommunity@tencent 删除软件设计二进制基础计算机数据

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