前言
进制是为了我们方便第操作数据、方便地读取数值所做的必要转换
进制分类
在计算机中常用的进制包括 二进制 八进制 十进制 十六进制
进制转换
一般进制转换主要是 任意进制与十进制转换,或者十进制转为二进制,十进制转为二进制所用到的方法为短除法。
二进制转化为十进制使用按权展开法
举例
十进制94 转二进制
则需要对94 进行短除,取余数
2 | 94 - 0
2 | 47 - 1
2 | 23 - 1
2 | 11 - 1
2 | 5 - 1
2 | 2 - 0
1
从下向上取得 1011110
转十进制 2^6 + 2^4 + 2^3 + 2^2 +2^1 =64 + 16 + 8 + 4 + 2 =94
二进制转八进制和十六进制,只需要取相应的位分段即可
原码反码补码移码
特点 | 数值1 | 数值-1 | 1-1 | 特点 | |
---|---|---|---|---|---|
原码 | 负数高位为1 | 0000 0001 | 1000 0001 | 1000 0010 | 可以表示正负数,不可以做数值减法 |
反码 | 符号位不变,负数数值位取反 | 0000 0001 | 1111 1110 | 1111 1111 | 可以做加减法,无法区分正负零 |
补码 | 在反码基础上 负数 数值位+1,符号位不变 |
0000 0001 | 1111 1111 | 0000 0000 | 可以做加减法 |
移码 | 在补码的基础上,符号位取反 | 1000 0001 | 0111 1110 | 1000 0000 | 不可以做加减法,作为浮点数阶码 运算使用 |
数值表示范围
整数范围 | 8 | |
---|---|---|
原码 | -(2^(n-1) -1)~(2 ^[n-1]-1) | -127~+127 |
反码 | -(2^(n-1) -1)~(2 ^[n-1]-1) | -127~+127 |
补码 | -(2^(n-1))~(2 ^[n-1]-1) | -128~+127(区分了正负0,将负0标记为128) |
浮点数运算
浮点数表示
N=M*R^e
M:尾数(表示将一个浮点数通过一些方式让其小数点向左偏移)
R:基数(一般在计算机中基数为 2 )
E:指数(小数点偏移的位数)
浮点数运算的步骤
对阶 --> 尾数运算-->结果格式化
举例
1000+119
首先对阶(保持指数相同)
1.0 x 10^3
1.19 x 10^2
对阶是低的对齐高的指数
1.19 x 10^2 --->0.119 x 10^3
尾数运算 将对阶的尾数相加减
1.0+0.119 =1.119
1.119 x 10^3;
结果格式化:确保小数点左边的位置不能是0,也不能是一位以上的数
如果出现0.xxx *10^n 需要让整数位是一个正整数,而不是0
格式化为x.xxx *10^[n-1]