佛山外贸网站建设流程,要怎么做网站动图,软件开发公司项目介绍,最近几年做电影网站怎么样二、数据的表示和运算 文章目录 二、数据的表示和运算1.数值与编码1.1数据存储和排列❗1.2十进制转换1.2.1整数1.2.2小数 1.3二进制转换1.3.1 B-O1.3.2 B-H 1.4真值机器数1.5 BCD码1.6 ASCII码1.7汉字与GBK1.8 UTF1.9检错码1.9.1奇偶校验码1.9.2循环冗余检测CRC1.…二、数据的表示和运算 文章目录 二、数据的表示和运算1.数值与编码1.1数据存储和排列❗1.2十进制转换1.2.1整数1.2.2小数 1.3二进制转换1.3.1 B-O1.3.2 B-H 1.4真值机器数1.5 BCD码1.6 ASCII码1.7汉字与GBK1.8 UTF1.9检错码1.9.1奇偶校验码1.9.2循环冗余检测CRC1.9.3海明汉明码 二进制
Bin 十进制
Dec 八进制
Oct 十六进制
HexC语言中用
0x表示 1.数值与编码
1.1数据存储和排列
在计算机系统内部所有的信息都是用二进制进行编码的这样做的原因有
二进制只有两种状态使用有两个稳定状态的物理器件就可以表示二进制数的每一位制造成本较低。二进制位1和0正好与逻辑值真和假对应为计算机实现逻辑运算和程序中的逻辑判断提供了便利条件。二进制的编码和运算规则都很简单通过逻辑门电路能方便地实现算术运算。
字符串存储时有大、小端之分。 边界对齐
进位计数法
在进位计数法中每个数位所用到的不同数码的个数称为基数如10进制的基数为10。每个数码所表示的数值等于该数码本身乘以一个与它所在数位有关的常数这个常数称为位权。一个进位数的数值大小就是它的各位数码按权相加。
码的权值
有权码例如BCD8421码、BCD2421码每一位都有固定的权值 无权码例如余三码每一位的权值并不确定 eg.二进制的基数是2计数符号是1和0位权是2^n。 下面为十进制和二进制之间相互转换的简易方法
❗1.2十进制转换
十进制转换中整数部分和小数部分分开进行转换。
1.2.1整数
下图演示了将十进制数字 36926 转换成八进制的过程 从图中得知十进制数字 36926 转换成八进制的结果为 110076。
下图演示了将十进制数字 42 转换成二进制的过程 从图中得知十进制数字 42 转换成二进制的结果为 101010。
1.2.2小数
下图演示了将十进制小数 0.930908203125 转换成八进制小数的过程 从图中得知十进制小数 0.930908203125 转换成八进制小数的结果为 0.7345。
下图演示了将十进制小数 0.6875 转换成二进制小数的过程 从图中得知十进制小数 0.6875 转换成二进制小数的结果为 0.1011。
1.3二进制转换
1.3.1 B-O
二进制整数转换为八进制整数时每三位二进制数字转换为一位八进制数字运算的顺序是从低位向高位依次进行高位不足三位用零补齐。下图演示了如何将二进制整数 1110111100 转换为八进制 1.3.2 B-H
二进制整数转换为十六进制整数时每四位二进制数字转换为一位十六进制数字运算的顺序是从低位向高位依次进行高位不足四位用零补齐。下图演示了如何将二进制整数 10 1101 0101 1100 转换为十六进制 1.4真值机器数
15-8这种带或-符号的数称为真值真值是机器数所代表的实际值。
在计算机中通常采用数的符号与数值一起编码的方法来表示数据常用的有原码、补码、反码表示法。这几种表示法都将数据的符号数字化通常用0表示正用1表示负。
如0,101逗号“”并不实际存在只是用来区分符号位与数值位约定整数的数值位与符号位之间用逗号隔开小数的符号位与数值位之间用小数点隔开表示5。这种把符号数字化的数称为机器数。
1.5 BCD码
binary-coded decimal用二进制编码的十进制
8421
用4bit表示1个十进制0900001001
冗余6位比如58131101这种超出91001的数再加60110进行修正得到0001 0011表示13
2421
0~4的第一位都是0 5~9的第一位都是1
原因501011011两种都可表示会出现歧义所以只使用后者
余三码
是一种无权码。在8421码的基础上加上3即0001110100
1.6 ASCII码
ASCIIAmerican Standard Code for Information Interchange美国信息互换标准代码是一套基于拉丁字母的字符编码共收录了 128 个字符用一个字节就可以存储它等同于国际标准 ISO/IEC 646。
2^7128。用7bit就可以表示完全不过1B字节8bit所以还要在高位补0。最早是7位后来扩充为8位在7位时期为满足被8整除条件需加1位空位才能使用
0~9的ASCII码值为48011 0000~57011 1001即去掉高3位只保留低4位正好是二进制形式的0~9。
a-z97-122A-Z65-90
a-A 32而32是空格。
其中0-31和127是控制字符其他的才是可显示字符
二进制十进制十六进制字符/缩写解释00000000000NUL (NULL)空字符00000001101SOH (Start Of Headling)标题开始00000010202STX (Start Of Text)正文开始00000011303ETX (End Of Text)正文结束00000100404EOT (End Of Transmission)传输结束00000101505ENQ (Enquiry)请求00000110606ACK (Acknowledge)回应/响应/收到通知00000111707BEL (Bell)响铃00001000808BS (Backspace)退格00001001909HT (Horizontal Tab)水平制表符00001010100ALF/NL(Line Feed/New Line)换行键00001011110BVT (Vertical Tab)垂直制表符00001100120CFF/NP (Form Feed/New Page)换页键00001101130DCR (Carriage Return)回车键00001110140ESO (Shift Out)不用切换00001111150FSI (Shift In)启用切换000100001610DLE (Data Link Escape)数据链路转义000100011711DC1/XON (Device Control 1/Transmission On)设备控制1/传输开始000100101812DC2 (Device Control 2)设备控制2000100111913DC3/XOFF (Device Control 3/Transmission Off)设备控制3/传输中断000101002014DC4 (Device Control 4)设备控制4000101012115NAK (Negative Acknowledge)无响应/非正常响应/拒绝接收000101102216SYN (Synchronous Idle)同步空闲000101112317ETB (End of Transmission Block)传输块结束/块传输终止000110002418CAN (Cancel)取消000110012519EM (End of Medium)已到介质末端/介质存储已满/介质中断00011010261ASUB (Substitute)替补/替换00011011271BESC (Escape)逃离/取消00011100281CFS (File Separator)文件分割符00011101291DGS (Group Separator)组分隔符/分组符00011110301ERS (Record Separator)记录分离符00011111311FUS (Unit Separator)单元分隔符001000003220(Space)空格001000013321!001000103422001000113523#001001003624$001001013725%001001103826001001113927’001010004028(001010014129)00101010422A*00101011432B00101100442C,00101101452D-00101110462E.00101111472F/001100004830000110001493110011001050322001100115133300110100523440011010153355001101105436600110111553770011100056388001110015739900111010583A:00111011593B;00111100603C00111101613D00111110623E00111111633F?010000006440010000016541A010000106642B010000116743C010001006844D010001016945E010001107046F010001117147G010010007248H010010017349I01001010744AJ01001011754BK01001100764CL01001101774DM01001110784EN01001111794FO010100008050P010100018151Q010100108252R010100118353S010101008454T010101018555U010101108656V010101118757W010110008858X010110018959Y01011010905AZ01011011915B[01011100925C\01011101935D]01011110945E^01011111955F_011000009660011000019761a011000109862b011000119963c0110010010064d0110010110165e0110011010266f0110011110367g0110100010468h0110100110569i011010101066Aj011010111076Bk011011001086Cl011011011096Dm011011101106En011011111116Fo0111000011270p0111000111371q0111001011472r0111001111573s0111010011674t0111010111775u0111011011876v0111011111977w0111100012078x0111100112179y011110101227Az011110111237B{011111001247C|011111011257D}011111101267E~011111111277FDEL (Delete)删除
1.7汉字与GBK
汉字的表示和编码
汉字的编码包括汉字的输入编码、汉字内码、汉字字形码三种它们是计算机中用于输入、内部处理和输出三种用途的编码。区位码用2字节(Byte)表示一个汉字每字节用七位码。区位码是4位十进制数前2位是区码后2位是位码所以称为区位码。 如汉字“学”的区位码为4907十进制用2个字节的二进制可以表示为00110001 00000111。 国标码将10进制的区位码转换为16进制数后再在每字节上加上20H。国标码两字节的最高位都是0ASCII码的最高位也为0。为了便于区分中文和英文字符将国标码两字节的最高位都改为1这就是汉字内码
区位码和国标码都是输入码它们与汉字内码的关系16进制为
国标码区位码162020H 汉字内码国标码168080H
最早制定的汉字编码是GB2312包括6763个汉字和682个其它符号 95年重新修订了编码命名GBK1.0共收录了21886个符号。 之后又推出了GBK18030编码共收录了27484个汉字同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字现在windows平台必需要支持GBK18030编码。
区内码-国标码-汉字机内码
1.8 UTF
(也就是unicode编码)俗称万国码致力于使用统一的编码准则表达各国的文字。 为表达更多的文字utf-8采用2/3混编的方式。目前容纳的汉字范围小于gbk编码。并且以 3字节的方式处理中文带来了兼容性的问题。
1.9检错码
校验码是指能够发现或能自动纠正错误的数据编码也称检错纠错编码。校验码的原理是通过增加一些冗余码来检验或纠错编码。
通常某种编码都由许多码字构成任意两个合法码字之间最少变化的二进制位数在一种编码系统中任意两组合法代码之间的最少二进制位数的差异称为数据校验码的码距或称编码的最小距离如1100和1101之间的码距为1因为只有最低位翻转了。而1001和0010之间的码距为3因为只有1位没有变化。对于码距不小于2的数据校验码开始具有检错的能力。码距越大检错、纠错的能力越强而且检错能力总是大于等于纠错能力。
检错编码只是发现有错误不能纠错只能重传。 奇偶校验码循环冗余码CRC 纠错编码 海明码不仅能发现错误还能知道是哪一个地方发生错误。
1.9.1奇偶校验码
前面加校验元1/0
要发送的信息 D 有 d 个比特。
在偶校验方案中发送方只需包含一个附加的比特选择附加比特的值使得这 d1 个比特(初始信息加上一个校验比特)中 1 的总数是偶数。 接收方的操作也很简单。接收方只需要数一数接收的 d1 比特中 1 的个数。 如果发现了奇数个值为 1 的比特接收方知道了至少出现了一个比特差错。更确切的说法是出现了奇数个差错比特。但是如果出现了偶数个比特差错显然这种方法无法检测这种错误。
eg: 如果1001101有4个1所以在前面加0保持偶数个10,1001101。
如果1001100有3个1所以在前面加1变成1,1001101。
奇校验
1001101有4个所以在前面加1变成奇数个11,1001101。
二维单比特奇偶校验方案中D 中的 d 个比特被划分为 i 行 j 列。对每行和每列计算奇偶值。产生的 ij1 奇偶比特构成了链路层帧的差错检测比特。这种方法可以检测和纠正 1 比特的错误。 用一位奇偶校验能检测出一位主存错误的百分比为 A.0 B.1 C.0.5 D.无法计算 答案B 若出现一位主存错误一定能检测出 1.9.2循环冗余检测CRC
在数据发送之前按照某种关系附加上一定的冗余码构成一个符合某一个规则的码字之后再发送。当发送的数据发生变化时冗余码也发生变化使其不再遵守规则。接收端通过检验是否符合规则判断是否出错。
CRC 编码也称为多项式编码因为该编码将要发送的比特串看作是系数为 0 和 1 的一个 多项式对比特串的操作被解释为多项式运算。
发送端
要传的数据生成多项式冗余码/帧检验序列FCS5%2 2 …1
5%22…1
最终发送的数据是要发送的数据真检测序列FCS。这里就是516
接收端
6%23…0余数是0判定无错就接受
计算冗余码FCS步骤
在要传的数据后加0。模2除法。最终发送的数据要发送的数据FCS。 如果余数为0判定这个帧没有差错。接受
如果余数不为0判定这个帧有差错。丢弃
FCS的生成以及接收端CRC检验都是由硬件实现的处理很迅速不会产生延迟数据。
只使用CRC凡是接收端数据链路层接受的帧均无差错。能够实现无比特差错的传输但不是可靠传输因为错误的帧丢弃了接收端并没有收到。
可靠传输数据链路层发什么接收端就接收什么。 例题在CRC中接收端检测出某一位数据错误后纠正的方法是 A.请求重发 B.删除数据 C.通过余数值自行纠正 D.以上均可 答案DCRC可以纠正一位或多位错误由多项式Gx决定而实际传输中纠正方法可以按需求进行选择在计算机网络中ABC三种方法都是很常见的 例题说明CRC码的纠错原理和方法。对4位有效信息1100求循环校验码选择生成多项式1011 答案在CRC码中选择适当的生成多项式Gx在计算机二进制信息Mx的长度确定时余数与CRC出错位的对应关系是不变的因此可以用余数作为判断出错位置的依据而纠正错码。CRC码的检错方法如下接受数据时将接收的CRC码与Gx相除若余数为0则表明数据正确若余数不为0说明数据有错。若Gx选择适当余数还可以判断出错的位置从而实现纠错。 1100的循环校验码为1100 010 1.9.3海明汉明码
海明码实际上是一种多重奇偶校验码。其实现原理是在有效信息位中加入几个校验位形成海明码并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后就会引起有关的几个校验位的值发生变化这不但可以发现错位还能指出错位的位置。汉明码有一位纠错能力。
可以发现双比特错但是只能纠正单比特错。
工作原理动一发而牵全身L-1DC且DC
工作流程 确认校验码位数r n为有效信息位数k为校验位的位数则n和k应满足海明不等式nk2^k-1。 确定校验码和数据的位置 求出校验码的值 检错并纠错
海明不等式 2 r ≥ k r 1 2^r \ge kr1 2r≥kr1 r冗余信息位校验码位数 k信息位原始数据的位数 例子数据D101101 ∴ 数据位数k6 ∵ 海明不等式 ∴ 满足不等式的最小r4 ∴ D的海明码应该有6410位 其中原数据6位效验码4位 校验码是插入原数据之中的而且只能放在2的几次方的位置
设4位效验码依次是p1, p2, p3, p4则它们放在
位数12345678910二进制0001001000110100010101100111100010011010代码p1p2d1p3d2d3d4p4d5d6实际值0010011101
一个校验码可以校验多位数据
p1的二进制位1在末尾所以它可以效验1在末尾的数据。 求p1。令所有要校验的位异或为0p1⊕d1⊕d2⊕d4⊕d50 将代码对应的实际值代入得到p10
同理p2的1在第二位p2⊕d1⊕d3⊕d4⊕d60p20
p30p41
所以D101101的海明码就是0010011101
当接收方收到时候就会重复上述异或过程就会检查出那个比特出错了。