二、计算机数据表示&&校验码(简单了解)
一、数据表示
机器数:各种数值在计算机中的表示形式。其特点是采用二进制计数器,数的符号用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校验时相对于其他校验方法就有一定的优势。
二、计算机数据表示&&校验码(简单了解)的更多相关文章
- 常用校验码(奇偶校验码、海明校验码、CRC校验码)
一.奇偶校验码 二.海明校验码 三.CRC校验码 计算机系统运行时,各个部之间要进行数据交换.交换的过程中,会有发生误码的可能(即0变成1或1变成0),由于计算机的储存是通过二进制代码来实现的的, ...
- 各种条码的校验码算法(EAN13,COD128,GTIN,UCC等)
校验码是由编码方案决定的,所以在代码中是否使用校验码和条码基本无关,但商品条码除外.今天给大家介绍几种校验码的计算方法. 一.商品条码: 商品条码中需要计算校验码的有:EAN-8(8位),EAN-13 ...
- 二维码简单Demo
二维码简单Demo 一.视图 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name=&qu ...
- APS.NET MVC4生成解析二维码简单Demo
一.视图 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewpor ...
- phpqrcode生成动态二维码简单实例
这是一个利用phpqrcode生成动态二维码简单实例,比微信官方提供的接口还要好用.二维码是动态的,不用生成图片,可自定义二维码大小,间隙,跳转地址等. 参数设置: include_once 'php ...
- pytho创建二维码简单版
pytho创建二维码简单版 import qrcode aa = qrcode.make("https://github.com/phygerr/") aa.save('C:\Us ...
- Django之DRF源码分析(二)---数据校验部分
Django之DRF源码分析(二)---数据校验部分 is_valid() 源码 def is_valid(self, raise_exception=False): assert not hasat ...
- 常用校验码(奇偶校验,海明校验,CRC)学习总结
常用校验码(奇偶校验,海明校验,CRC)学习总结 一.为什么要有校验码? 因为在数据存取和传送的过程中,由于元器件或者噪音的干扰等原因会出现错误,这个时候我们就需要采取相应的措施,发现并纠正错误,对于 ...
- Hamming校验码
可参考:http://winda.blog.51cto.com/55153/1068000 Hamming校验码作用:用于校验通信数据,防止出现错误,并具有一定的纠错功能. 汉明码在传输的消息流中插入 ...
随机推荐
- 利用scrapy爬取腾讯的招聘信息
利用scrapy框架抓取腾讯的招聘信息,爬取地址为:https://hr.tencent.com/position.php 抓取字段包括:招聘岗位,人数,工作地点,发布时间,及具体的工作要求和工作任务 ...
- 异常:java.lang.RuntimeException: Canvas: trying to draw too large(161740800bytes) bitmap
现象 今天做一个安卓项目的时候,我使用了10张图片,这10张图片都是放在了drawable目录下. 根据这个错误,我在网上寻找解决问题的方案,然后我放在了mipmap-xxhdpi下结果可以运行. 但 ...
- IDEA必备插件系列 - Key Promoter X(快捷键使用提示)
Key Promoter X 是用于基于 IntelliJ 产品(如 IDEA,Android Studio 或 CLion)的插件,它有助于在工作时从鼠标操作中 学习基本的键盘快捷键. 当您在 ID ...
- 版本控制神器——git的基本使用
git基础命令 安装git windows的话,直接下载安装即可 Linux Ubuntu安装,apt-get install git Linux Centos安装,yum install git 配 ...
- Spring Boot整合MyBatis(非注解版)
Spring Boot整合MyBatis(非注解版),开发时采用的时IDEA,JDK1.8 直接上图: 文件夹不存在,创建一个新的路径文件夹 创建完成目录结构如下: 本人第一步习惯先把需要的包结构创建 ...
- 文件上传之靶场upload-labs (1-10)
第一关 sj 绕过 源码如下: lasIndexOf是返回函数最后一次出现的地方(从右到左) substring是用来截取函数的 indexOf是返回 表示从.出现的地方开始截取并判断是否在允许的字符 ...
- 微信小程序——详细讲解页面传值(多种方法)
1.使用navigator的url带参传值 (1)在pageA页面有一个固定的值要传递到pageB页面,比如说一个固定的值user_id要传递给B <navigator url=".. ...
- Spring Boot2 系列教程(三十)Spring Boot 整合 Ehcache
用惯了 Redis ,很多人已经忘记了还有另一个缓存方案 Ehcache ,是的,在 Redis 一统江湖的时代,Ehcache 渐渐有点没落了,不过,我们还是有必要了解下 Ehcache ,在有的场 ...
- hibernate绑定session
session session是一种单实例对象 简单说就是自己用 别人不能用.在一些项目中很多人一起来操作 所以我们可以把session与我们的本地线程一起绑定,本地线程的特点就是执行一次 从创建到销 ...
- 笔记||Python3之模块与包
模块的概念:一个.py文件就称之为一个模块. 包的概念:把许多个模块按照功能放到不同的目录中来组织模块,这些组织存放模块文件的目录,我们称之为包. 模块与包的优势:1- 方便别人调用 2 - 避免同名 ...