纲要:
- 计算机中的进制
- 位值制计数法
- Java中的进制
- 位运算
- 基本数据类型的存储
- Java中的整数类型
- IEEE754及BigDecimal
- 小数的2进制化
- Java中的字符型和布尔型
计算机中的进制
1.位值制计数法
定义: 按位置决定数值的方式来计数的方法
一个数的大小是用一组有顺序的数字表示。
例如: 1 2 3的全排列是表示不一样的数值。[可以自己试着用dfs深度优先遍历试试全排列]
数字所表示的大小,取决于它所代表的数值和所处的位置。
扩展知识:
1.数码:使用的数字符号
2.基数:每个进制的基数
3.位权:固定位置对应的单位值。
例如:10进制的数码:0 1 2 3 4 5 6 7 8 9
10进制的基数: 10
10进制的位权: 个 十 百 千 万 。。。。。
例如:2019中的2代表1000的个数,0代表100的个数,1代表10的个数,9表示1的个数。
所以2019 = 2* 1000 + 0* 100 + 1*10 + 9 *1 = 2*10^3 + 0*10^2+1*10^1+9*10^0
可以看出,位权就是数码位置所代表的固定单位值 = “基数^N”。
而N(指数) 的规律: 从0开始,从右到左,顺序递增
由上面可以推出:
2进制的计数规则:
数码:0 1
基数: 2
位权: 基数的幂次方:从右到左2的0次方、2的1次方、2的2次方.。。
2.2进制转化为10进制:
规则:展开位权进行求和运算
e.g: 100110转化为10进制:
=1*2^5+0*2^4+0*2^3+1*2^2+1*2^1+0*2^0 = 38
3. 10进制转化为2进制:
规则:除2取余直到运算结果=0,则将余数倒序排列得到最终结果。
e.g: 29转化为2进制:
所以结果=11101
4. 2进制的小数部分:
e.g: 10进制的小数:0.1256 = 1*(10^(-1))+2*(10^(-2))+5*(10^(-3))+6*(10^(-4))
e.g: 2进制的小数:0.1101 = 1*(2^(-1))+1*(2^(-2))+0*(2^(-3))+1*(2^(-4))
即:2进制的小数位权从左到右:2^(-1)、2^(-2)、2^(-3)、2^(-4).。。。
5. 2进制的小数部分:2进制转10进制:
规则:展开位权进行求和运算
e.g: 0.1101 =1*(2^(-1))+1*(2^(-2))&