数据
二进制 十进制(人类use) 十六进制 (2,4,16 是权)
1011.011=2^3+0*2^2+2^1+2^0+0*2^-1+1*2^-2+1*2^-3=8+0+2+1+0+0.25+0.125 =27.375
七进制转十进制(权不一样)
604.01 = 6*7^2+0*7^1+4*7^0+0*7^-1+1*7^-2
十进制转二进制
十进制0.125换算为二进制
乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分
二进制转8进制
1101011 -> 001,101,011 (三位为一个8进制) = 2^0 2^2+2^0 2^1+2^0 = (1 5 3)_8
二进制转十六进制 同上(4位为一位16)10-16 = ABCD...
码 -- 8位表示 第一位 符号位(0正 1负)
正数 原码 反码 补码一样 负数 反码就是符号位不变原码各位反转 补码在反码基础上加1
移码 是在补码的基础上符号位取反
补码用来加减法运算 (1+1 = 0 进位) 丢一位
十制数123表示为:123D或者123;二进制数1011表示为:1011B;十六进制数3A4表示为:3A4H
Binary表示二进制,简写为B。Octal表示八进制,简写为O。Decimal表示十进制,简写为D。Hexadecimal表示十六进制,简写为H。
练习题
如果“2X”的补码是“90H”,那么X的真值是多少?
分析:(1)“90H”中H表示16进制,所以将90H转换成二进制
(2)真值即原码,所以需要将补码转换成原码
转换成二进制:90H = 1001,0000
补码:1001,0000 反码:1000,1111 原码:1111,0000
1111,0000转换成16进制 = -70H = -7x+0x=-112
所以2x = -112,x = -56
所以x的真值为-56
数值的表示范围
举个例子,比如机器位数为4,可以表示的范围为1111到0111,第一位为符号位,111二进制转化十进制为7,
表示范围为-7到7也就是-(24-1)-1到+(24-1)-1,所以不需要死记,去套下就可得除范围
那么补码和移码为什么要少一位呢?因为补码和移码没有负零。
浮点的运算
浮点数表示
N=尾数*基数指数。 --科学计数法
-110.11=-0.11011*2^11阶符、阶码、数符、尾数分别表示0、11、1、11011
运算过程
对阶>尾数计算>结果格式化
特点
1 .一般尾数用补码,阶码用移码
2.阶码的位数决定数的表示范围,位数越大范围越大
3.尾数的位数决定数的有效精度,位数越多精度越高
4.对阶时,小数向大数看齐
5.对阶时通过较小数的尾数右移实现
检验码 检测仅此一位错误 无法判断位置
海明码
设数据位是n位,校验位是k位,则n和k满足以下关系:
2^k-1>=n+k
循环冗余校验码 CRC
循环冗余校验码广泛应用于数据通信领域和磁介质的存储系统中,它利用生成多项式为k个数据位产生r个校验位来进行编码,其编码长度为k+r。CRC的代码格式如下:
循环冗余校验码有两部分组成:数据为、校验位。若数据位占k位,则校验位占n-k位。n为CRC码的字长。检验码越长校验能力就会越强。在CRC编码是,采用的是模2运算,模2运算加减运算的规则是按位运算,不发生借位和进位。
模2除法 (异或运算) 也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可。模2加法运算为:1+1=0,0+1=1,0+0=0,