黑马程序员技术交流社区

标题: 无符号右移 [打印本页]

作者: zhxueqiu    时间: 2013-6-22 00:29
标题: 无符号右移
大侠们
怎样把十进制数43用>>>右移成16进制.
作者: ytblght55    时间: 2013-6-22 01:39
:L:L传智618的同学报上名字///
作者: ytblght55    时间: 2013-6-22 02:05
本帖最后由 ytblght55 于 2013-6-22 02:09 编辑
  1. /*
  2. *  需求:十进制数43用>>>右移成16进制.
  3. *  思路:定义一个转换的方法tohex(int num)十进制的值,16进制是进行倒除法取余数,所用将num&15用temp记录该值
  4.             用temp记录该值,判断&这个数是否超过9,超过将其强转成字符打印出来.
  5.    步骤:
  6.         1,定义一个方法取名为tohex
  7.         2,转换成16进制是进行倒除法,取余数,所用将num&15用temp记录该值
  8.         3,16进制超过9使用A-F来表示的,所以我们要判断temp是否超过9如果超过强制转换成字符
  9.         4,运行结果你要到倒着看才是对的哦,没有将数值倒置
  10.         5,你可以把我注释掉的里面的代码放开就可得得到一个比较直观的值(这个老师还没讲到,我注释掉了)
  11. * */
  12. public class Test14 {
  13.         public static void main(String[] args) {
  14.                
  15.                 // TODO Auto-generated method stub
  16.                 toHex(43);
  17.         }
  18.         public static void toHex(int num){
  19.                 //StringBuffer sb = new StringBuffer();
  20.                 for (int x=0 ;x<8 ;x++ )//一组二进制数是00000000,定义循环的次数小于8
  21.                 {
  22.                         int temp = num & 15;//将num&15用temp来记录该值
  23.                         if (temp > 9)//因为16进制10到15是用字符A-F表示,通过if来判断
  24.                                 System.out.print((char)(temp-10+'A'));//强制转换成字符型,输出
  25.                         //sb.append((char)(temp-10+'A'));
  26.                         else
  27.                                 System.out.print(temp);//如果小于9直接输出
  28.                         //sb.append(temp);
  29.                         num = num >>>4;//无符号右移4位
  30.                 }
  31.                 //System.out.println(sb.reverse());
  32.                 }
  33.         }

  34. <FONT color=yellowgreen>//希望能帮到你!!!
  35. </FONT>
复制代码

作者: zhxueqiu    时间: 2013-6-24 00:01
ytblght55 发表于 2013-6-22 01:39
传智618的同学报上名字///

张雪秋 你谁呀。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2