前言:
在计算机底层,只能识别1和0,但是如果只用0和1来写代码,会发现非常不方便,所以就诞生出的像int ,char ,long ,short等一系列的整形数据,来减少工作量,提高写代码效率,但是其在内存中的存储依然是0和1。
一、进制
2进制: 0~1 (逢二进一,这里要知道二进制只有0~1,如果出现了2说明不是用的二进制计数,以下同理)
8进制: 0~7
10进制:0~9
16进制:0~9 a b c d e f
进制之间可以相互转化
十进制:10 二进制:00000000 00000000 00000000 00001010
这里 10 等于 2^3+2^1 ,就在二进制的2^3位置和2^1的位置上进1。
这里会发现在二进制序列最左边的1是一个数能分出的最大的2的n次方
比如一个数 62:00000000 00000000 00000000 00111110 最右边的就是2^5
1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 1*2^1= 32 + 16 + 8 + 2 = 62 (1可以省略)
计算方法:
十进制:123 转换 二进制:111011
商为0后,余数从下往上排列 (这里最后一步省略了除2商0)
二进制: 1111 1111 1111 1111 1111 1111 1111 1111 转换
十六进制:F F F F F F F F =0xFFFFFFFF
一个十六进制最大为F就是15,15转换二进制数为 1111,这里可以知道,一个十六进制数的二进制最大为1111。
这里四个二进制数的位数是固定的。2^3+2^2+2^1+2^0,每位的值称之为权值,4位二进制数的权值就是为8、4、2、1。即,最高位权值为2^3 = 8,然后依次是 2^2 = 4,2^1=2, 2^0 = 1。
由此就这里已知二进制数,可以快速算出。(其他进制的计算方法同理,只是权值不同)
仅四位的二进制数 |
快速计算方法 |
十进制值 |
十六进制值 |
1111 |
8+4+2+1 |
15 |
F |
1110 |
8+4+2+0 |
14 |
E |
1101 |
8+4+0+1 |
13 |
D |