二、计算机数据表示&&校验码(简单了解)
一、数据表示
机器数:各种数值在计算机中的表示形式。其特点是采用二进制计数器,数的符号用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实现自动抓取51job并分别保存到redis,mongo和mysql数据库中
项目简介 利用scrapy抓取51job上的python招聘信息,关键词为“python”,范围:全国 利用redis的set数据类型保存抓取过的url,现实避免重复抓取: 利用脚本实现每隔一段时间, ...
- UINavigationController-自定义导航栏标题按钮.
见视频0416 自定义导航栏标题按钮,在Bar Button Item中加入UIButton,设置UIButton的图片和标题,还可以自定义自定义UIButton实现特效按钮.
- 程序员的算法课(14)-Hash算法-对海量url判重
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/m0_37609579/article/de ...
- Djangoday3template
template第一个demo从后台传递数据到前端从后台传递list前端for循环显示内容后台传输dict到前端 template第一个demo template存在app/templates目录下 ...
- 基于Win服务的标签打印(模板套打)
最近做了几个项目,都有在产品贴标的需求 基本就是有个证卡类打印机,然后把产品的信息打印在标签上. 然后通过机器人把标签贴到产品上面 标签信息包括文本,二维码,条形码之类的,要根据对应的数据生成二维码, ...
- ruby方法名之命名方式
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 modify_my_object!,这个方法名是以 ! 结尾,在 ruby 的对象里边是用于表达修改本身的意思. 比如 String#gsub ...
- 【nodejs原理&源码赏析(6)】深度剖析cluster模块源码与node.js多进程(下)
[摘要] cluster模块详解 示例代码托管在:http://www.github.com/dashnowords/blogs 阅读本章需要先阅读本系列前两章内容预热一下. 一. 引言 前两篇博文中 ...
- iOS使用Workspace来管理多项目 ( 转 )
开发中会有一些常用的类或方法,或者是某个特定功能的,比如一个自定义的弹框.一个更容易使用的网络请求库,可以把它们放到一个单独的工程里,通过静态库(library.FrameWork)的方式应用到任何其 ...
- 数据库MySQL的安装与卸载
安装 MySQL 卸载 MySQL: 停止 MySQL 服务 开始-->所有应用-->Windows 管理工具-->服务,将 MySQL 服务停止. 卸载 mysql server ...
- CF 1130A 1130B 1130C1129A1 1129A2 1129B(Round542A B C D1 D2 E)题解
A : Be Positive 题目地址:https://codeforces.com/problemset/problem/1130/A 题解:让你求是否满足一个d使得数列长为n的a数组的每个数除以 ...