zoukankan      html  css  js  c++  java
  • 【组成原理】第二章 数据的表示与运算

    1. 为什么产生ASCII码?
    在计算机中,所有的数据在存储和运算时都使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,互相通信而不造成混乱,就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。
    包括:10个十进制数码、52个英文大小写和一定数量的专用符号(%, @, +等等),总共128个字符。

    2. 为什么会有大小端模式之分呢?
    这是因为在计算机系统中,数据存储是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器);另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如果将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。两者有相应应用优势,作为一种规则约定俗称。

    我们常用的X86结构、很多的ARM和DSP是小端模式,而KEIL C51则为大端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。
    在操作系统中,x86和一般的OS(如windows,FreeBSD,Linux)使用的是小端模式。但比如Mac OS是大端模式。

    小端模式:低字节存放在低地址
    大端模式:高字节存放在低地址

    3. 汉明码
    汉明码是在电信领域的一种线性调试码,以发明者理查德·卫斯里·汉明的名字命名。汉明码在传输的消息流中插入验证码,以侦测并更正单一比特错误。由于汉明编码简单,它们被广泛应用于内存(RAM)。其SECDED版本另外 加入一检测比特,可以侦测两个或以下同时发生的比特错误,并能够更正单一比特的错误。

    一、1开始给数字的数据位(从右向左)标上序号, 1,2,3,4,5...;
    二、将这些数据位的位置序号转换为二进制,1, 10, 11,100, 101,等;
    三、数据位的位置序号中所有为二的幂次方的位(编号1,2,4,8,等,即数据位位置序号的二进制表示中只有一个1)是校验位;
    四、有其它位置的数据位(数据位位置序号的二进制表示中至少2个是1)是数据位; 五、每一位的数据包含在特定的两个或两个以上的校验位中,这些校验位取决于这些数据位的位置数值的二进制表示。

    根据纠错理论得:L-1=D+C 且D>=C
    即编码最小距离L越大,则其检验错误的位数D越大,纠正错误的位数C也越大

    设欲检验的的二进制代码为n位,为使其具有纠错能力,需增添k位检验位,组成n+k为的代码。为了能准确对错误定位以及指出代码代码位置,新增添的检验位数k应满足:2^k>=n+k+1。

    海明码计算要按以下步骤来进行:计算校验码位数→确定校验码位置→确定校验码
    最后每组通过异或逻辑运算(与偶校验原理一样),使每组的运算结果为0,即可得出第 i 位校验码的值。

    实现校验和纠错
    把以上这些校验码所校验的位分成对应的组,则在接收端的对各校验位再进行逻辑“异或运算”,如果采用的是偶校验,正常情况下均为0。

    步骤:

    (1)确定海明码的位数

    n+k <= 2^k - 1(n位有效信息的位数,k位校验位的位数)

    (2)确定校验位的分布

    规定校验位Pi放在海明位号为2^i位上,其余信息为信息位

    海明码的各位分布如下:

    H7 H6 H5 H4 H3 H2 H1
    D4 D3 D2 P3 D1 P2 P1

    (3)分组形成校验关系

    被校验数据位的海明位号等于校验该数据位的各校验位海明位号之和。

    如D4放在位置H7上,7分解成4+2+1,由这些位的校验位P3、P2、P1校验。

    (4)校验位取值

    P1由H3,5,7,9,11位的信息位进行异或;

    P2由H3,6,7,10,11位的信息位进行异或;

    P3由H5,6,7,12,13位的信息位进行异或。

    (5)海明码校验

    S1 = P1 D1 D2 D4异或

    S2 = P2 D1 D3 D4异或

    S3 = P3 D2 D3 D4异或

    S3 S2 S1 = 001,说明H1位出错,取反即可纠正。

  • 相关阅读:
    html2jspdf文档
    监听localstorage
    vue插件 webpack打包 style中的element样式没有打包进去
    css-loader导致vue中样式失效
    webpack vue-clii-service vite create-react-app umi对比
    react使用antd数据改变视图没更新原因
    npx
    Webpack原理—编写Loader和Plugin
    VUE Element el-input只能输入数字,限制数字长度,重写label宽度
    php--laravel --debug--mac
  • 原文地址:https://www.cnblogs.com/cpsmile/p/8978566.html
Copyright © 2011-2022 走看看