一、数据表示

机器数:各种数值在计算机中的表示形式。其特点是采用二进制计数器,数的符号用0和1标识,小数点则隐含,表示不占位置。机器数分为带符号数和无符号数。无符号数称为正数。

比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是 0000 0011。如果是 -3 ,就是 100 00011

真值:机器数对应的实际数值成文输的真值。

因为第一位是符号位,所以机器数的形式值就不等于真正的数值。 例如上面的有符号数 1000 0011,其最高位1代表负,其真正数值是 -3,而不是形式值131(1000 0011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值

码制:为便于计算,带符号的机器数可采用原码,反码和补码等不同的编码方式,这些编码方式称为码制。

1.原码

原码就是符号位加上真值的绝对值。

原码表示法中,最高位是符号位,0标识正号,1表示负号,其余n-1位表示数值的绝对值。特别的,0的原码表示有两种形式:[+0]=0 0000000,[-0]=1 0000000.

2.反码

在反码表示法中,最高位是符号位,0标识正号,1表示负号,正数的反码与原码相同,负数的原码是其绝对值按位取反。特别的,0的反码表示有两种:[+0]=0 0000000 [-0]=1 1111111.

一般来说,

负数的反码是在其原码的基础上,符号位不变,其余各个位取反。

[+1]  = [0000 0001]原 = [0000 0001]反

[-1]  = [1000 0001]原 = [1111 1110]反

3.补码

在补码表示法中,最高位是符号位,0标识正号,1表示负号,正数的补码与其原码反码相同,负数的补码等于其反码的末位加1.特别的0的补码:[+0]=0 0000000 [-0]=00000000.

一般来说,

[+1] = [0000 0001]原 = [0000 0001]反 = [0000 0001]补

[-1] = [1000 0001]原 = [1111 1110]反 = [1111 1111]补

二、校验码

计算机系统运行时,为确保数据在传输过程中正确无误,一是提高硬件电路可靠性,二是提高代码的校验能力,包括查错和纠错。通常用校验码来检测。

1.奇偶校验码

奇偶校验码(Parity Codes)是一种简单有效的校验方法。这种方法通过在编码在中增加一位校验位来使编码中1的个数为奇数(奇校验)或者为偶数(偶校验),从而使得码距变为2.

常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。

奇校验:原始码流+校验位 总共有奇数个1。

奇校验是通过在末尾添加1或者0的方式使1的个数为奇数。校验时通过1的个数是否为奇数判断是否出错了。偶校验同理。

偶校验:原始码流+校验位 总共有偶数个1

例如奇校验:

如 11001100编码后为 11001100 1(最后一位添加为1,使1的个数是奇数5)

当出错个数为奇数时,将导致1的个数的奇偶发生变化,可以检测出错误,而为偶数时,1的个数的奇偶不变,故检测不出,还得用偶校验。

当有3个(奇数个)位出错,假设是后三位那么就变成 11001011 1这时1的个数就变成了6个,可以判断,出错了。而2个(偶数个)位出错,假设是后两位那么就变成 11001111 1这时1的个数为7个,仍然是奇数,就检测不出错误了

这里所体验的基本原理是:一个奇数加上偶数仍然是奇数,加上奇数就变成偶数。

2.海明码

一种利用奇偶性来检错纠错的校验方法。是在数据位之间的特定位置插入K个校验位,通过扩大码距实现纠错。

转载:https://www.jianshu.com/p/f8a0477ca313

3.循环冗余校验码(CRC)

是利用除法及余数的原理来作错误侦测的。

循环冗余校验是一种用于校验通信链路上数字传输准确性的计算方法(通过某种数学运算来建立数据位和校验位的约定关系的 [1]  )。发送方计算机使用某公式计算出被传送数据所含信息的一个值,并将此值 附在被传送数据后,接收方计算机则对同一数据进行 相同的计算,应该得到相同的结果。如果这两个 CRC结果不一致,则说明发送中出现了差错,接收方计算机可要求发送方计算机重新发送该数据。

在计算机网络通信中运用CRC校验时相对于其他校验方法就有一定的优势。

二、计算机数据表示&&校验码(简单了解)的更多相关文章

  1. 常用校验码(奇偶校验码、海明校验码、CRC校验码)

    一.奇偶校验码 二.海明校验码 三.CRC校验码   计算机系统运行时,各个部之间要进行数据交换.交换的过程中,会有发生误码的可能(即0变成1或1变成0),由于计算机的储存是通过二进制代码来实现的的, ...

  2. 各种条码的校验码算法(EAN13,COD128,GTIN,UCC等)

    校验码是由编码方案决定的,所以在代码中是否使用校验码和条码基本无关,但商品条码除外.今天给大家介绍几种校验码的计算方法. 一.商品条码: 商品条码中需要计算校验码的有:EAN-8(8位),EAN-13 ...

  3. 二维码简单Demo

    二维码简单Demo 一.视图 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name=&qu ...

  4. APS.NET MVC4生成解析二维码简单Demo

    一.视图 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewpor ...

  5. phpqrcode生成动态二维码简单实例

    这是一个利用phpqrcode生成动态二维码简单实例,比微信官方提供的接口还要好用.二维码是动态的,不用生成图片,可自定义二维码大小,间隙,跳转地址等. 参数设置: include_once 'php ...

  6. pytho创建二维码简单版

    pytho创建二维码简单版 import qrcode aa = qrcode.make("https://github.com/phygerr/") aa.save('C:\Us ...

  7. Django之DRF源码分析(二)---数据校验部分

    Django之DRF源码分析(二)---数据校验部分 is_valid() 源码 def is_valid(self, raise_exception=False): assert not hasat ...

  8. 常用校验码(奇偶校验,海明校验,CRC)学习总结

    常用校验码(奇偶校验,海明校验,CRC)学习总结 一.为什么要有校验码? 因为在数据存取和传送的过程中,由于元器件或者噪音的干扰等原因会出现错误,这个时候我们就需要采取相应的措施,发现并纠正错误,对于 ...

  9. Hamming校验码

    可参考:http://winda.blog.51cto.com/55153/1068000 Hamming校验码作用:用于校验通信数据,防止出现错误,并具有一定的纠错功能. 汉明码在传输的消息流中插入 ...

随机推荐

  1. 并发编程--greenlet与gevent

    什么是greenlet? 虽然CPython(标准Python)能够通过生成器来实现协程,但使用起来还并不是很方便. 与此同时,Python的一个衍生版 Stackless Python实现了原生的协 ...

  2. Mybatis一级缓存和二级缓存总结

    1:mybatis一级缓存:级别是session级别的,如果是同一个线程,同一个session,同一个查询条件,则只会查询数据库一次 2:mybatis二级缓存:级别是sessionfactory级别 ...

  3. vue 结合 Echarts 实现半开环形图

    Echarts 实现半开环形图 1.先看看实现的图 2.HTML部分 创建id 是 chart 的div标签. <div class="content-item"> & ...

  4. 【Android - 自定义View】之View的位置参数

    View是Android中所有控件的基类,不管是简单的Button和TextView,还是复杂的RelativeLayout和ListView,其基类都是View类:ViewGroup也继承了View ...

  5. JS前端将table导出到excel 兼容谷歌 IE 且保留表格样式

    CDSN上博主给我一段代码,可将表格导出为EXCEL文档,原文见: https://blog.csdn.net/zz210891470/article/details/94717644 向博主学习.致 ...

  6. 你真的了解foreach吗?

    引言 有C#基础的,当问到循环有哪些,会毫不犹豫的说出的for.do while.foreach及while这几种,但是到具体实际开发中,我们遇到一些问题,比如:到底选择哪种?为什么选择这种?哪种好像 ...

  7. sed 使用介绍

    第6周第4次课(4月26日) 课程内容: 9.4/9.5 sed 9.4/9.5 sed 操作实例如下 sed和grep比较起来,sed也可以实现grep的功能,但是没有颜色显示,sed强项是替换一些 ...

  8. VLAN实验1(VLAN基础配置及Access接口)

    本实验基于<HCNA网 络技术实验指南> 本实验使用eNSP软件 原理概述: 早期的局域网技术是基于总线型结构的.总线型拓扑结构是由一根单电缆连接着所 有主机,这种局域网技术存在着冲突域问 ...

  9. 2019-2020-11 20199304 《Linux内核原理与分析》 第十一周作业

    缓冲区溢出漏洞实验 一.简介 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回 ...

  10. 2019-2020-1 20199304《Linux内核原理与分析》第三周作业

    1.操作系统是如何工作的? 计算机三个法宝(3个关键性的方法机制): 存储程序计算机.函数调用堆栈.中断机制. 1.1堆栈: 在计算机领域,堆栈是一个不容忽视的概念,堆栈是一种数据结构.堆栈都是一种数 ...