一. 十进制与二进制之间的转换
十进制:是用是个符号表示:0,1,2,3,4,5,6,7,8,9
二进制:使用0,1表示
256 128 64 32 16 8 4 2 1
十进制: 235 = 2× + 3× + 5×
二进制: 1011 = 1 × + 0× + 1× + 1× = 11
二 . 八进制与十六进制的转换
八进制: 用8个可用符号来表示一个数字 : 0,1,2,3,4,5,6,7
十六进制: 用16个可用符号来表示一个数字0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(A=10,B=11,C=12,D=13,E=14,F=15)
八进制 277 = 2× + 7× + 7× = 191
十六进制 2AE = 2× + 10× + 14× = 686
十六进制 7E = 7× + 14× = 126
三 . 十进制转二进制 (连除法)
29/2 = 14...........1
14/2 = 7...............0
7/2 = 3................1
3/2 = 1.................1
1/2 = 0...................1
二进制从下往上取余数 : 11101
四 . 十进制转换八进制 (连除法)
185(10) 185/8 = 23.............5
23/8 = 2...............7
2/8 = 0...............2
185(10) 转为八进制 275(8)
五.十进制转十六进制
十进制:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15(10)
十六进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(16)
2717(10)转为十六进制
2717/16 = 169.............13 D
169/16 = 10.....................9 9
10/16 = 0.........................10 A
2717转为16进制 A9D
六. 十六进制转为十进制
A9D
10×+9×+13× = 2717
七.二进制转八进制,十六进制
1.二进制转八进制(没三项为一组)
10 111 102(2)
1×+0×+1×+1×+1×+1×+0×+2× = 275(8)
2.八进制转二进制(分组连除)
275(8) 10111101(2)
2/2 = 1........0 7/2 = 3.........1 5/2 = 2.........1
1/2 = 0.........1 3/2 = 1.........1 2/2 = 1........0
10 1/2 = 0..........1 1/2 = 0........1
111 101
结果为: 10111101
二进制转为十六进制(每四位为一组)
1011 1101(2)
3.十六进制转为二进制(分组连除)
bd b:11 d:13
11/2 = 5..............1 13 / 2 = 6...........1
5/2 = 2................1 6 / 2 = 3............0
2/2 = 1.................0 3 / 2 = 1..............1
1/2 = 0.................1 1 / 2 = 0..............1
1011 1101
1011 1101
八.八进制转为十进制
275(8)
2× + 7× + 5× = 189 (10)
十六进制转为十进制
bd b=11 d = 13
11× + 13× = 189
位运算
与 : &
或 : |
异或 : ^
取反 : ~
左移 : <<
右移 : >>(有符号) >>>(无符号)
位运算&(与)
0&0 = 0 0&1 = 0 1&1 = 1
只要对应位的值都是1结果才为1,否则为0
0 0 0 0 0 0 1 0
&
1 1 1 1 1 1 1 0
0 0 0 0 0 0 1 0
位运算 | (或) : 有一个为1则为1
0|0 = 0 1|1 = 1 0|1 = 1
0 0 0 0 0 0 1 0
| 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 0
位运算^(异或) : 不同为1,相同为0
0^0 = 0 0^1 = 1 1^1 = 0
0 0 0 0 0 0 1 0
^ 1 1 1 1 1 1 1 0
1 1 1 1 1 1 0 0
按位取反~
二进制的0变为1,1变为0
左移:<< 左移后右边位补0
右移:>> 右移后左边位补原最左位值(可能是0,可能是1)
右移:>>> 右移后左边位补0,无符号
负数右移前补1
正数右移前补0