所有的数字在计算机内都是以二进制的形式进行存储的。
二进制(binary): 0,1 以0b或0B开头。
八进制(octal): 0-7 以数字0开头表示。
十进制(decimal) 0-9
十六进制(hex): 0-9及A-F 以0x或0X开头表示。
二进制最高位为符号位,0为正,1为负。
3的二进制:
0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
原码,反码,补码
计算机内以补码的形式存储数据,参与运算
正数的原码,反码,补码相同
负数的反码为原码除符号位按位取反,符号位任为1
补码为反码+1
下以-1为例
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
模拟1 + -1 如果采用原码计算 得到结果会是-2
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
进制间的转换:
一:二进制,十进制
①二进制->十进制(按照原码进行运算)
对应位数乘以二的相应次幂再求和
00011010——>2^1+2^3+2^4
00101011——>2^0+2^1+2^3+2^5
负数 若以补码,反码形式出现,转换成原码再进行运算
1111 0010(补码)
1000 1101(反码)
1000 1110(原码)——> -(2^1+2^2+2^3)
②十进制->二进制
除二取余的逆
12——>12%2=6余数0
6%2=3余数0
3%2=1余数1
1%2=0余数1
去逆1100,高位用0补齐 0000 1100
负数符号位补1,得到的是原码
③二进制->八进制
0000 0000 1110 1001
从最低位开始每三位分割开 000->0; 111->7
0000 000 011 101 001——>0351
④二进制->十六进制
0000 0000 1110 1001
从最低位开始每四位分割开 0000->0; 1111->F
0000 0000 1110 1001——>0XE9