每日总结
数的表示
机器数:各种数值在计算机中表示的形式,其特点是使用二进制计数制,数的符号用0和1表示,小数点则隐含,不占位置。
机器数有无符号数和带符号数之分。无符号数表示正数,没有符号位。带符号数最高位为符号位,正数符号位为0,负数符号位为1。
定点表示法分为纯小数和纯整数两种,其中小数点不占存储位,而是按照以下约定:
纯小数:约定小数点的位置在机器数的最高数值位之前。
纯整数:约定小数点的位置在机器数的最低数值位之后。
真值: 机器数对应的实际数值。
数的编码方式
原码:一个数的正常二进制表示,最高位为符号位。
数值 0 的原码有两种形式:+0(0 0000000) 和 -0 (1 0000000)
反码:正数的反码及原码;负数的反码是在原码的基础上,除了符号位以外,其他各位按位取反。
数据 0 的反码:+0 (0 0000000) 和 -0 (1 1111111)
补码:正数的补码及原码;负数的补码是在原码的基础上,除了符号位以外,其他各位按位取反然后末位 +1;若有进位就产生进位。因此,数值 0 的补码只有一种形式 +0 = -0 = 0 0000000.
移码:用作浮点数运算的阶码。无论是正数还是负数,都是将原码的补码的首位(符号位)取反,得到移码。
浮点数的表示
浮点数:表示方法为N= F × 2^E,其中E称为阶码,F称为尾数;类似于十进制的科学计数法,如85.125 = 0.85125×10^2,二进制如 101.011 = 0.101011×2^3。
算术运算与逻辑运算
数与数之间的算术运算包括加、减、乘、除等基本算术运算,对于二进制数,还应该掌握基本逻辑运算,包括: 逻辑与&:0和1相与,只要有一个为0结果就为0,两个都为1才为1。
逻辑或|: 0和1相或,只要有一个为1结果就为1,两个都为0才为0。
异或: 同0非1,即参加运算的二进制数同为0或者同为1结果为0,一个为0另一个为1结果为1。 逻辑非!:0的非是1,1的非是0。 逻辑左移<<: 二进制数整体左移n位,高位若溢出则舍去,低位补0. 逻辑右移>>:二进制数整体右移n位,低位溢出则舍去,高位补0。
校验码
码距:就单个编码A: 00而言,其码距为1,因为其只需要改变一位就变成另一个编码。
在两个编码中,从A码到B码转换所需要改变的位数称为码距,如A:00要转换为B:11,码距为2。一般来说,码距越大,越利于纠错和检错
奇偶校验
奇偶校验码:在编码中增加 1 位校验位来使编码中1的个数为奇数(奇校验)或者偶数(偶校验),从而使码距变为2。
奇校验:编码中,含有奇数个1,发送给接收方,接收方收到后,会计算收到的编码有多少个1,如果是奇数个,则无误,是偶数个,则有误。
偶校验同理,只是编码中有偶数个1,由上述,奇偶校验只能检1位错,并且无法纠错。
海明校验码
海明码:本质也是利用奇偶性来检错和纠错的检验方法,构成方法是在数据位之间的确定位置上插入k个校验位,通过扩大码距实现检错和纠错。
设数据位是n位,校验位是k位,则n和k必须满足以下关系: 2^k-1>=n+k。