🍊进制的转换
四种进位计数制
①十进制:具有十个不同的数码,基数为10,各位的位权为10i。进位规则是“逢十进一”。
②二进制:具有两个不同的数码0、1,基数为2,各位的位权为2i。进位规则是:“逢二进一” ③八进制:具有八个不同的数码,基数为8,各位的位权是8i。进位规则是“逢八进一”。
④十六进制:具有16个不同的数码,基数为16。各位的位权是16i。进位规则是“逢十六进一”。
1.十进制转换至非十进制
1.十进制转换为二进制
整数部分
将十进制数除以2,得到商和余,然后将商继续除以2,得余,以此类推,直到商小于2,然后将每一步的余数倒序的拼接起来,就得到了正确的二进制。设有十进制数:249,计算过程如下:
小数部分
将十进制数乘以2,然后将整数部分取出来当结果,小数部分继续乘以2,以此类推,直到达到精度或小数变为0时停止,然后将每一步的整数正序拼接就得到了二进制小数。设有十进制数:0.390625,计算过程如下:
2.十进制转换为八进制
整数部分
计算过程与二进制类似,只不过是基数不同。以250为例。
所以十进制250 转二进制为372
小数部分
设有十进制数:0.53125,计算过程如下
故十进制0.53125 的八进制为0.42
3.十进制转十六进制
与上面2个一样的步骤,就不举例子了
2.非十进制转换为十进制
对于整数部分,非十进制数的位数设为n,那么整数的最小位(最右边)的权值为0,最高位(最左边)的权值为n-1。
对于小数部分,非十进制小数的位数设为n,那么小数最高位(最左边)的权值为-1,最低位(最右边)的权值为-n。
对应的,对于混合的数字分别结算后拼接在一起即可。
1.二进制转十进制
拿二进制数10010110举例
(计算方法是从右向左依次乘上2的n次幂,n从零开始,^符号表示次幂)
1*2^7+0*2^6+0*2^5+1*2^4+0*2^3+1*2^2+1*2^1+0*2^0=150
2.八进制转十进制
拿八进制数226举例(由右向左依次乘以8的n次幂,n从零开始)
2*8^2+2*8^1+6*8^0=150
3.十六进制转十进制
与上面2个一样的步骤,就不举例子了
3.非十进制转换为非十进制
1.二进制转换成八、十六进制
二进制转换成八:整数从右向左三位并一位 小数从左向右三位并一位
二进制转换成十六进制:整数从右向左四位并一位,小数从左向右四位并一位
2.八、十六进制转换成二进制
🍇原码、反码、补码
1)原码表示法
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.
比如如果是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:
[1111 1111 , 0111 1111]==>[-127 , 127]
2)反码表示法
反码的表示方法是: 正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
3)补码表示法
补码的表示方法是:正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1) [+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
正数:原码 = 反码 = 补码
4)移码表示法
补码的数值部分不变,符号取反,即得移码
已知x=-1100101 ,求[x]补和[x]移。
x=-1100101
[x]补=10011011
[x]移=00011011
注意点
补码对于数字0,在补码表示中,0有唯一的编码
即[+0]补=0000 0000 , [-0]补=0000 0000。换句话说,数值0采用补码形式表示,机器位数全为0
8位字长的表示补码(1000 0000)最小整数-128
🍓定点数、浮点数
在计算机中,小数点以及位置都是隐含的;
有两种隐含方式:定点和浮点
定点数:小数点的位置是固定不变的
定点小数:小数点隐含固定在最高数据位的左边,整数位则用于表示符号位,用于表示纯小数
定点整数:小数点隐含固定在最低数据位之后,最高位还是为符号位,用于表示纯整数
浮点数:小数点的位置由阶码规定的,因此是浮动的。
在计算机中通常把浮点数N分成阶码和尾数两部分组成。
N=尾数*基数^阶码(尾数是一个规格化的纯小数)
(11100.101)2=(0.11100101)*2^101
IEEE754标准 格式规范
阶符 阶码 尾符 尾数
🍈逻辑运算
①与运算:与运算符用“∧”或“·”表示。与运算的运算规则是:仅当两个参加运算的逻辑值都为“1”时,与的结果才为“1”,否则为“0”。
运算规则如下: 0·0 = 0,0·1 = 1·0 = 0,1·1 = 1
②或运算:或运算符用“∨”或“+“表示。运算规则是:仅当两个参加运算的逻辑值都为“0”时,或的结果才为“0”,否则为“1”。 运算规则如下:
0 + 0 = 0,0 + 1 = 1 + 0 = 1,1 + 1 = 1
③非运算:非运算符用“~”或在逻辑值的上方加一横线“ ”表示。 运算规则是:对逻辑值取反。
运算规则是:~0 = 1,~1 = 0
④异或运算:常用的逻辑运算还有“异或”运算,又称为半加运算,其运算符号常用XOR或⊕表示。设A和B为两个逻辑变量,当且仅当A、B的值不同时,A“异或”B为真。A“异或”B的运算可由前三种基本运算表示。
运算规则如下: 0 ⊕ 0 = 0,0 ⊕ 1 = 1 ⊕ 0 = 1,1 ⊕ 1 = 0 (同为0,异为1)
🍑常用字符编码
BCD码
是指每位十进制数用4位二进制数编码表示。选用0000~1001来表示0~9这10个数字。这种编码方法比较直观、简单,对于多位数,只需将它的每一位数字按表1-4中所列的对应关系用BCD码直接列出即可。
ASCII码
又称“美国标准信息交换代码” 用7位二进制数表示一个字符;实际存储时,每个字符用一个字节存储,最高位设置为0
最多可以表示128个字符,编码为0~127,包括10个数字符号、52个大小写英文字母、32个标点符号和运算符以及34个控制符。
典型ASCII码值:A为65,a为97,0为48
校验码
1.奇偶校验码
一种通过增加冗余位使得码字中"1"的个数恒为奇数或偶数的编码方法,它是一种检错码。
奇校验:整个校验码(有效信息位和校验位)中“1”的个数为奇数。
数被校验的信息中“1”的个数,如果“1”的个数是奇数个,在信息位最前面(默认)或者最后面(根据题目要求)添加“0”;如果“1”的个数是偶数个,在信息位最前面(默认)或者最后面(根据题目要求)添加“1”;
偶校验:整个校验码(有效信息位和校验位)中“1”的个数为偶数
数被校验的信息中“1”的个数,如果“1”的个数是偶数个,在信息位最前面(默认)或者最后面(根据题目要求)添加“0”;如果“1”的个数是奇数个,在信息位最前面(默认)或者最后面(根据题目要求)添加“1”;
只能检错,不能纠错
2.海明码
海明码,小名汉明码(Hamming Code),以发明者理查德·卫斯里·汉明的名字命名。海明码具有检错和纠错双功能,它基于奇偶校验原理,只能检查出某一位错码的位置。当有多位错码时,它就不适用了。
可以检错,也能纠错
3.循环冗余校验码
循环冗余校验码简称CRC码,是目前使用非常广泛的数据校验方式.它不仅能校验传递过来的数据正确性,还能筛查出哪一位出现了错误.它的局限性是只能校验一位数据发生跳变,在现实世界当中数据发生跳变很大很大的概率只有一位发生变化,因此CRC码也拥有很大的发挥舞台.
只能检错,不能纠错