1、进制与编码
1.1 进位计数法
常用的进位计数法有十进制、二进制、八进制、十六进制等。十六进制每个 数位可取0〜9、A、B、C、D、E、F中的任意一个,其中A、B、C、D、E、F分别表示 10〜15。
八进制数字通常以前缀 "0"(零)加上数字表示,例如,八进制数 12 表示为 014
。在JavaScript中,你可以使用前缀 "0o" 或 "0O" 来表示八进制数。例如:0o14
十六进制数字通常以前缀 "0x" 或 "0X" 开头表示,例如,十六进制数 1A 表示为 0x1A
1.2 不同进制数之间的相互转换
(1)二进制混合数转化为八进制或16进制
对于一个二进制混合数(既包含整数部分,又包含小数部分),在转换时应以小数点为界。 其整数部分,从小数点开始往左数,将一串二进制数分为3位(八进制)一组或4位(十六进制) 一组,在数的最左边可根据需要加“0”补齐;对于小数部分,从小数点开始往右数,也将一串 二进制数分为3位一组或4位一组,在数的最右边也可根据需要加“0”补齐。
(2) 十进制数转换为任意进制数
1.3 定点数的编码表示
定点数编码表示法主要有以下4种:原码、 补码、反码和移码。
1.3.1 原码
用机器数的最高位表示数的符号,其余各位表示数的绝对值。
真值零的原码表示有正零和负零两种形式,即[+0]原= 00000和[-0]原= 10000
1.3.2 反码
正数反码的定义和相应的补码(或原码)表示相同。负数反码的定义在绝对值按位求反。
0的表示不唯一(即存在正负0);
1.3.3 补码
对于正数,与原码的方式一样。对于负数,符号位取1,其余各位由真 值“各位取反,末位加1”得到。补码转换为真值,若符号位为0,与原码的方式一样。若符号位为1,真值的符号为负,数值部分各位由补码“各位取反,末位加1”得到。
0的表示唯一
1.3.4 移码
移码就是在真值X上加上一个常数(偏置值)。如果机器字长为n,偏移值为
2、运算方法和运算电路
(有需要再弄懂)
此ALU的核心是带标志加法器
3、整数的表示和运算
(有需要再弄懂)
.有符号数和无符号数的转换
将short int强制转换为unsigned short 只改变数值,而两个变量对应的每位都是一样的。
不同字长整数之间的转换,当大字长变量向小字长变量强制类型转换时,系统把多余的高位部分直接截 断,低位直接赋值,因此也是一种保持位值的处理方法。而短字长到长字长的转换,在位值相等的条件下还要补充高位的符号位,可以理解为数值 的相等。
4、 浮点数的表示与运算
浮点数的运算:1. 对阶,2. 尾数求和,3. 规格化,4. 舍人,5. 溢出判断
5、校验码(数据校验)
- 数据校验原因:为减少和避免数据在计算机系统运行或传送过程中发生错误,在数据的编码上提供了检错和纠错的支持。
- 数据校验码的定义:能够发现某些错误或具有自动纠错能力的数据编码;
- 数据校验的基本原理是扩大码距;码距为任意两个合法码之间不同的二进制位的最少位数;仅有一位不同时,称其码距为1。
5.1 奇偶校验码
- 判断数据中1的个数设置1位校验位;
- 分奇校验和偶校验两种,只能检错,无纠错能力;
- 偶校验:每个码字(包括校验位)中1的数目为偶数。
- 奇校验:每个码字(包括校验位)中1的数目为奇数。
- 只能发现奇数个错误,不能纠错。
5.2海明校验码
在奇偶校验的基础上增加校验位而得;具有检错和纠错的能力;
设K为有效信息的位数,r为校验位的位数,则整个码字的位数N应满足不等式:N=K+r≦2r-1 通常称为(N,K)海明码设某(7,4)海明码表示的码字长度为 7 位,校验位数为 3 位。
每个校验位Pi从低到高被分在海明码中位号2i-1的位置;