次为笔记记录,原视频链接为B站视频链接,若有错误请指出,看到就会改正
进制
r进制数及其转换成十进制数

 r^n就是第n位的维权,n<0就是小数部分的位权。
 例子:1011
 为十进制的时候:1011=1×103+0×102+1×101+1×100
 为二进制的时候
 1011=1×23+0×22+1×21+1×20=(10)10
 为八进制的时候
 1×83+0×82+1×81+1×80=(521)10
 为十六进制的时候
 1×163+0×162+1×161+1×160=(2990)10
十进制转换成r进制
- 对于整数部分就是除基取余数法.注意:到着取
- 对于小数部分是乘基取整法.注意:顺着取
例子
将十进制的32.125分别转换为二,八,十六进制
 
二,八,十六进制的转换
看例子: 二进制转换为八进制,三位一组,转换为十六进制,四位一组,整数部分不足的在前面补零,小数部分不足的在后面补零
B->O,H
二进制的101101011.1011
 转换为八进制
 101 101 011.101 100=553.6
 转换为十六进制
 1 0110 1011.1011=16B.B
BCD码
8421码
这个要掌握加法运算
 四位二进制数能表示的状态是16种,但8421码只用前10种.
加法运算:出现非法码(10~15之间的),在非法码的基础上加上0110,低位向高位产生了进位,在低位加上0110.
 每四位分成一组,在产生进位的组中加上0110
例子
用8421BCD码来计算9+9的结果
 1001
 +1001
 10010
 将10010+0110=1 1000 转换为十进制为18
 0110
余3码
在8421码的基础上,每四位加0011即可
2421码
举个例子来说,求98的2421码
 9=2+4+2+1
 8=2+4+2
 (98)2421=1111 1110
字符串
英文的就是ASCII码,需要注意的是A的ASCII码是65,a的ASCII是97,0是48
汉字的表示是用GB 2312-80来表示的
字符串的结束标志常采用’\0’作为结尾标志
大端模式与小端模式
大端模式:将数据的最高有效字节存储在低地址单元中,这个模式便于人识别
 小端模式:将数据的最高有效字节存储在高地址单元中.这个模式便于计算机识别
 
区位码,国标码,机内码的互相转换
区位码了解下,就是94个区,每个区94个位置,每个位置存放一个汉字,这样汉字就能数值化了,每个位置有一个唯一的编号,这样就能将汉字与数值对应起来
注:以下说明的+20H,+80H都是每两位加一个,不足两位前面补零凑齐两位
 区位码+20H->国标码。个人理解,记公式也可以(之所以加20H是为了跳过控制/通信字符的)
 国标码+80H->汉字内码 个人理解,记公式也可以(之所以加80H是为了和英文做个区分,80H转换乘十进制就是128,英文的ASCII码是占用一个字节,最高位都是0,加上80H就是将每一个字节的最高位置为1)
 
奇偶校验码
这个的纠错能力:1位,检错能力:2位
- 码字: 由若干位代码组成的一个字叫做码字
- 将两个码字逐位进行对比,具有不同的位的个数称为两个码字间的距离
- 合法码字间的最小距离称为’码距’
码距=1时,没有检错能力,等于2时有检错能力,大于等于3时,设计合理,可能具有检错、纠错能力
- 奇校验码:整个编码或者数据中的1的个数必须为奇数 可以通过同或来实现
- 偶校验码:整个编码或者数据中的1的个数必须为偶数 可以通过异或来实现
例子
1001 0001 0001的奇校验码为1 1001 0001 0001(1001 0001 0001中1的个数为偶数,所以校验位必须为1,才能保证1的个数为奇数)
 偶校验码为0 1001 0001 0001(1001 0001 0001中1的个数为偶数,所以校验位必须为0,才能保证1的个数为偶数)
海明校验码
信息位:n
 校验位:k
 2k>=n+k+1
 找到满足条件的最小k
 看一个例子
 信息位:1011
 信息位为4,带入2k>=n+k+1得,k=3
 校验位Pi需要放在海明码得2i-1的位置上

 
 
P1 = H3异或H5异或H7,就是只管P1所在列为1的部分,H3=1,H5=1,H7=1,P1的结果为1
 P2 = H3异或H6异或H7=1异或0异或1=0
 P3=H5异或H6异或H7=1异或0异或1=0
 所以最终结果为1010101
 校验方程
 
 如果元数据为1010101,接收到的数据时1010001
P1=1(就是最后一位.因为2i-1=1.i此时等于1),H的下标是从最后一位开始的,比如H1就是最后一位(从左往右数)
 S1 = 1异或1异或1异或1=0
 S2 = 0异或1异或0异或1=0
 S3= 0异或1异或0异或1 = 1
 S3 S2 S1 = 100 转换为二进制为4,就是从右往左数,第四位出错了,将第四位取反即可
最后
加上一个全校验位进行偶校验
 若S3 S2 S1 =000且全体偶校验成功就是无错误
 若S3 S2 S1 ≠000且全体偶校验失败就是有1位错误,取反
 若S3 S2 S1 ≠000且全体偶校验成功就是有2位错误,需要重传
循环冗余校验码 CRC
这个用于网络传输比较多一点,几千个bit+几个校验位
 我个人理解就是约定一个除数,将接收到的信息对除数进行模2除,如果除数等于0就是没有错误,反之就有错误,但是这个余数的所代表的位置不一定就是错误的.
k个信息位,r个校验位,满足2r>=k+r+1,crc码可纠正1位错误
例子:生成的多项式G(x)=x3+x2+1,信息码位101001,求对应的CRC码。
 生成的多项式为 1101(G(X)=x3+x2+x0,如果式子中有该位的序号就是1,如有3,那么第四位就是1,有0,那么第一位就是1,如果没有就是0),G(x)最大幂数是3,需要将101001逻辑左移3位得到101001000.
 
 最终结果位101001001
定点数的表示
无符号数
没有符号位,全部都是数值位,相当于数的绝对值
 范围:n位的无符号数的表示范围0~2n-1
有符号数
原,反,补,移码
- 原码:若为负数,符号位为1,若为正数符号位为0.
- 反码:正数的原,反,补码都是一样的,负数的反码就是符号位不变,各位取反
- 补码:负数的补码在反码的基础上面+1
- 移码:在补码的基础上将符号位取反即可。
  
 移码主要是方便比较大小
运算
[x+y]补=[x]补+[y]补
 [x-y]补=[x]补+[-y]补
 判断溢出:
 单符号位:
 
 
 双符号位:当符号位为01时则上溢,当符号位为10则位下溢
移位运算
算数移位
符号位保持不变,仅仅对数值位进行移位。所有的正数的算数移位都与原码一样
 原码右移高位补零,低位丢弃,原码左移低位补零,高位丢弃
 反码:负数右移高位补1,低位丢弃,反码左移低位补1,高位丢弃
 补码:负数右移高位补1,低位丢弃,反码左移低位补0,高位丢弃
 
 应用
 
逻辑移位
逻辑右移:高位补0,低位舍弃
 逻辑左移:低位补0,高位舍弃
循环移位

 
符号扩展

原码的乘法运算
将MQ的最后一位与X相乘存储到ACC中,再进行逻辑右移,重复,知道MQ的乘数被移除
 

 
 
 
 
 
 
补码一位乘法
Booth算法
 
原码除法

 
 
 
 
 
 
 
 
 
 
 
 
 
 
补码除法

 
强制类型转换
int a=165537,b=34991;
 short c=(short)a,d=(short)b;
 
 short x=-4321;
 int m=x;
 x: 1110 1111 0001 1111
 m:1111 1111 1111 1111 1110 1111 0001 1111
 是以补码存储的,x是负数,负数符号位扩展添加1(在符号位与数值之间)
浮点数

 阶码E反映浮点数的表示范围及小数点的实际位置,常用补码或移码表示的定点整数
 尾数M的数值部分的位数n反映浮点数的精度,常用原码或补码表示的定点小数
 阶码.尾数都用补码表示,求a,b的真值
 a=0,01;1.1001
 b=0,10;0.01001
 a=21×(-0.0111)=-0.111
 b=22×(0.01001)=1.001
规格化
左规:尾数算数左移一位,阶码减一
 右规:尾数算数右移一位,阶码加一(双符号位为01或10时)
 
若某浮点数的阶码,尾数用补码表示,共4+8位,0.110;1.1110100如何规格化
2 6×(-0.0001100)
23×(-0.1100)
IEEE 754标准

 规格化的短浮点数的真值为(-1)s×1.M×2E-127
将十进制数-0.75转换为IEEE 754的单精度浮点数格式表示
 (-0.75)10=(-0.11)2=(-1.1)×2-1
 数符:1位,因为是负数所以为1
 阶码:8位 -1 + 111 1111=0111 1110 凑足8位
 尾数:23位 10000000000000000000000
 结果: 1 0111 1110 10000000000000000000000
IEEE 753的单精度浮点数 C0 A0 00 00H的值是多少
 1 100 0000 1010 0000 0000 0000 0000 0000
 数符:为1 所以是负数
 阶码:8位 1000 0001看成无符号数 129D
 尾数:23位 010 0000 0000 0000 0000 0000
 2129-127×(-1.01)=22×(-1.01)=-101=-5
 特点
- 当阶码E全为0,尾数M不全为0时,表示非规格化小数
 例如:20×1.00000001111
- 当阶码E全为0,尾数M全为0时,表示真值正负0
 例如:20×(-1.00000000000)=-0
 20×(1.00000000000)=0
- 当阶码E全为1,尾数M全为0时,表示无穷大(正负都有)
- 当阶码E全为1,尾数M不全为0时,表示非数值
运算
这里我可能算错了,你们选择的看
 例题:
 已知十进制数X=-5/256,Y=59/1024,按照及其补码浮点数运算规则计算X-Y,结果用二进制表示,浮点数格式如下:阶符取2位,阶码取3位,数符取2位,尾数取9位,用补码表示阶码和尾数
 X=-101×2-8=-0.101×2-3=-0.101×2-011,Y=-111011×2-10=-0.111011×2-4=-0.111011×2-100
 x: 11 011 11 0110 00000
 y: 11 100 00 0111 01100
- 对阶: 小的向大的对齐(绝对值小的向大的对齐
 求阶差:[▲E]补=11011+ 00 100=11 111=-1 x<y
 对阶: x:11 011 11 10110 0000 (补码算数右移,空出来的补1)
- 尾数相减
 -Y = 11 100 11 000101000
 X-Y= 
- 规格化
 X-Y= 11 100 10.1100 0100 0=11 101 11.011000100
 双符号位算数右移 10.1100 0100 0 ->10.011000100->11.011000100
- 舍入: 没有舍入
 舍入方法1:0舍1入.最后一位是1就进1,若是0直接舍去
 方法2:恒置1 最后一位恒置1
- 判溢出:无溢出

![vue老项目增加提交格式化功能[eslint+prettier+husky+lint-staged]](https://img-blog.csdnimg.cn/72865cbeb7f94ff0b43276a432a6baf1.png)
















