黑马程序员—位运算符练习 十进制的十六进制表现形式 及三元运算符
------- android培训、java培训、期待与您交流! ----------
?
class weiyi //练习2 位移的应用 十进制的十六进制表现形式 及三元运算符{public static void main(String[] args) {//System.out.println(Integer.toBinaryString(60));//System.out.println(Integer.toHexString(60));/*二 问题:如何获得60的十六进制位的表现形式 ?思路:先获取60的二进制形式的最低4位,通过&15(即二进制位 1111 )*/int num = 60;int n1 = num & 15;//System.out.println((char)(n1-10+'A'));/*结果为c 即答案的倒数第一位(后期有更简单的方法) n1-10是为了看出最后一位比10多几位,因为16进制满9就进了 没有10,所以利用ASCII码表的字符具有数字代表的功能得出最低位应该是什么 如下:0-9 'A' 'B' 'C' 'D' 'E' 'F'65 66 6710 11 12 13 14 1512 - 10 = 2 + 'A' = (char)67;*/ //接着 要获取下一组四位,则将60右移4位。int temp = 60>>> 4;/*为什么要用无符号右移 因为如果出现负数的情况 则右移后高位会被1补齐 则变成死循环了 所以要用无符号右移*///接着 对temp的值进行最低四位的获取。int n2 = temp & 15;//System.out.println(n2);//结果为3 即答案的倒数第二位 最终答案为60=3c/*上述的 int n1 = num & 15;System.out.println((char)(n1-10+'A')); 中我们实际并不知道n1与9的大小关系 所以应该是这样写 利用马上要学的三元运算符 示例如下:*/int x=3,y;y=(x>1)?100:200;System.out.println("y="+y);//同理 我们可以完善上面的做法System.out.println(n1>9?(char)(n1-10+'A'):n1);/*注意 ? : 与后期的语句相像 因为是运算符 所以一定有结果 而且如果100换成字符型比如说'a' 因为'a'会与200进行运算 所以会自动进行提升 就出现67而不是c的情况了 结果是67了.吼吼...老师说以后自己写一个代码对一个整数进行16进制形式获取的时候,再会讲到*/System.out.println(n2>9?(char)(n1-10+'A'):n2);/*想要知道一个整数的二进制表现形式的时候,也可用上述方法二进制就是& 1 再右移1位八进制就是& 7 再右移3位 十六进制就是&15 再右移4位*/}}
?