二、计算机数据表示&&校验码(简单了解)
一、数据表示
机器数:各种数值在计算机中的表示形式。其特点是采用二进制计数器,数的符号用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校验码作用:用于校验通信数据,防止出现错误,并具有一定的纠错功能. 汉明码在传输的消息流中插入 ...
随机推荐
- 2019年12月1日Linux开发手记
配置ubuntu摄像头: 1.设置→添加→usb控制器→兼容usb3.0 2.虚拟机→可移动设备→web camera→连接(断开主机) 3.查看是否配置成功,打开终端,输入: susb ls /de ...
- ctf线下赛中检测外来IP的shell脚本
该脚本可用于ctf线下赛中,用来检测攻击IP的接入,及时做出响应. #!/bin/bash #写自己队的ip ipA="172.22.60.230" ipB="172.2 ...
- 从spring源码汲取营养:模仿spring事件发布机制,解耦业务代码
前言 最近在项目中做了一项优化,对业务代码进行解耦.我们部门做的是警用系统,通俗的说,可理解为110报警.一条警情,会先后经过接警员.处警调度员.一线警员,警情是需要记录每一步的日志,是要可追溯的,比 ...
- SpringBoot学习(七)—— springboot快速整合Redis
目录 Redis缓存 简介 引入redis缓存 代码实战 Redis缓存 @ 简介 redis是一个高性能的key-value数据库 优势 性能强,适合高度的读写操作(读的速度是110000次/s,写 ...
- 【C/C++】之C/C++快速入门
1 基本数据类型 C/C++语言中的基本数据类型及其属性如下表所示: 类型 取值范围 大致范围 整形 int -2147483648 ~ +2147483647 (即-231 ~ +(231-1 ...
- Jpa支持LocalDateTime类型持久化
package com.boldseas.porscheshop.common.config; import javax.persistence.AttributeConverter; import ...
- 第三章 学习Shader所需的数学基础(4)
法线变换 法线(normal),也被称为法矢量(normal vector).在以前我们已经讲过如何使用变换矩阵来变换一个顶点或方向矢量,但法线是需要我们特殊处理的一种方向矢量.在游戏中,模型的顶点往 ...
- 第二章 Unity Shader基础
[TOC] 1. Unity Shader 的基础: ShaderLab 学习和编写着色器的过程一直是一个学习曲线很陡峭的过程,通常情况下为了自定义渲染效果往往要和很多文件和设置打交道,这些设置很容易 ...
- 使用Python编写打字训练小程序【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/devcloud/article/detail ...
- AUTH_USER_MODEL 添加报错(粗心)
HINT: Add or change a related_name argument to the definition for 'UserProfile.user_permissions' or ...