进制转换
主要表现形式:4种方式
二进制 八进制 十进制 十六进制
二进制 : 逢二进一 0 1 10 11 100 101
0b 或者 0B 开头
例子:
0b1010110110101001011
八进制 : 逢八进一 0 1 2 3 4 5 6 7 10
以 0 开头
例子:
012547641
十进制 : 逢十进一 0 1 2 ~ 9 10
12345
十六进制: 逢16进一 0 1 2 ... 9 a b c d e f 10
以 0x 或者 0X 开头
0xabc 0XABC
该四个进制之间的转换:
* 二进制 《====》 十进制
* 二进制 ---》 十进制 : 权位相加
ob10101 ===》 1*2^0 + 1*2^2 + 1*2^4 ===> 21
很方便地查看权位:
0b11111111 ===》 128 64 32 16 8 4 2 1
12345 : 1万2千3百4十5
* 十进制 ----》 二进制 : 除以2 逆向取余
63 ---》 0b111111
====================
八进制 和 十进制
* 八进制 ---》 十进制 :权位相加
0671 ===》 6*8^2 + 7*8^1 + 1*8^0
* 十进制 ---》 八进制 :除以八 逆向取余
543 ===> 01037
=======================
十六进制 和 十进制 :
* 十六进制 ---》 十进制 : 权位相加
0xabc ====》 10*16^2 + 11*16^1 + 12*16^0 = 2748
* 十进制 ---》 十六进制: 除以16 ,逆向取余
465 ===> 0x1d1
=======================
进制之间的转化大总结:
任意进制 ----》 十进制 : 权位相加
十进制 ----》 任意进制 : 除以该进制数,逆向取余
八进制和二进制: 1:3
十六进制和二进制: 1:4
源码反码补码
计算机内部对整数的存储都是以 补码 的形式 保存在计算机中
正数: 原码 = 反码 = 补码
负数: 反码 = 原码符号位不变,其他全部取反
补码 = 反码 + 1
例子:
int x = 123;
分析(原码) : 00000000 00000000 00000000 01111011
反码: 00000000 00000000 00000000 01111011
补码: 00000000 00000000 00000000 01111011 ---》在x中的存储
int y = -123;
分析(原码) : 10000000 00000000 00000000 01111011
反码: 11111111 11111111 11111111 10000100
补码: 11111111 11111111 11111111 10000101 ==> 在y中的存储