A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 彭家贰小姐 高级黑马   /  2013-8-3 21:39  /  1848 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

(1)十进制转二进制
原理:对十进制数进行除2运算
2 |_6__ 0
2 |__3__ 1
1 1
然后倒过来就是 110
①通过代码也可以: Integer.toBinaryString(6);
(2)二进制转十进制
原理:二进制乘以2ⁿ次方的过程
110 <-- 0×2º + 1×2¹ + 1×2²
0 + 2 + 4 = 6
①计算技巧
1 1 1 1 1 1 1 1
128 64 32 16 8 4 2 1

所以00110101 = 32+16+4+1 = 53
②因为128+64+32+16+8+4+2+1 = 255
所以一个字节最大255
(3)二进制转十六进制
原理:四个二进制位就是一个十六进制位
0101 1010 十进制是90
_____ _____

5 10 A
90 = 0×5A
(4)二进制转八进制
原理:三个二进制位代表一位
1011010 十进制是90
先补位
001 011 010
___ ___ ___
1 3 2
所以90 = 0132
(5)负数的二进制
-6 = 6的二进制取反加1
⒈在内存中 6 四个字节是这样表示的
00000000 00000000 00000000 00000110
⒉取反: 1-->0 0-->1
11111111 11111111 11111111 11111001
⒊加1
11111111 11111111 11111111 11111001
+ 00000000 00000000 00000000 00000001
______________________________________
11111111 11111111 11111111 11111010
这个最终的数字就是-6
①通过代码也可以: Integer.toBinaryString(-6);
②负数的最高位是1 正数的最高位是0
(6)在位运算符的时候,也设计到了进制的转换
根据上面的方法
0000-0000 0000-0000 0100-1100 1110-0110
0 0 0 0 4 12 14 6
该数十六进制的表现形式为 0x4CE6
学习了以后,我们可以这样思考:
⒈&15可以取出最后的四位
0000-0000 0000-0000 0100-1100 1110-0110 = 60
&0000-0000 0000-0000 0000-0000 0000-1111 = 15
______________________________________
0000-0000 0000-0000 0000-0000 0000-0110 = 12
⒉右移四位 再&15
0000-0000 0000-0000 0000-0100 1100-1110 | 0110 = 60>>4 = temp
&0000-0000 0000-0000 0000-0000 0000-1111 = 15
__________________________________________
0000-0000 0000-0000 0000-0000 0000-1110 = 3

通过以上方式就可以将二进制转成十六进制
①&15之后的数字
0-9 A B C D E F
0-9 10 11 12 13 14 15
(char)(12-10+'A') 即可打印出来
②int temp = 60 >>>4;
用无符号右移
因为 >> 如果是负数,前面会补1就永远也移不完了
③如果是十六进制就四位四位处理
同理如果是八进制就三位三位处理
如果是二进制就一位一位的处理

1 个回复

倒序浏览
谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马