黑马程序员技术交流社区

标题: 有点小迷糊 [打印本页]

作者: HM周一帆    时间: 2013-3-28 20:57
标题: 有点小迷糊
本帖最后由 HM周一帆 于 2013-3-29 08:26 编辑

public static void ten2Hex(int num){
while(num !=0){
                 int temp = num &15;
               
                 if(temp>9){
                      System.out.println((char)(temp-10+'A'));
                      }else
                            System.out.println(temp);
                           num = num>>>4;
                 }
}
                        int temp  = num&15;这一行是干什么呢?
作者: 刘胜寒    时间: 2013-3-28 21:08
int temp = num&15 ;这是与运算,就是告诉你temp最大为15...
与运算知道吧??
举个例子
比如2&15 结果是2;
但是 127&15就是15了。
    11111111000000
& 00000000001111
-----------------------------
    00000000000000
这个就是与运算,希望对你有帮助
作者: 蔡陶军    时间: 2013-3-28 21:20
&作为与运算符的话 就是两个操作数的二进制进行与操作,0就是false,1就是true
例如;6&3=2
过程;110
        &011
------------
          010      =2


&
true&true=true;
true&false=false;
false&true=false;      只要两边的boolean表达式结果,有一个为false,结果为false。只有两边都为true,结果才为true
false&false=false;

作者: 王杰123    时间: 2013-3-28 21:27
int temp  = num&15;这一行是干什么呢?

这是二进制转十六进制时采用的,& 是与运算符,15的二进制是 0000-0000 0000-0000 0000-0000 0000-1111。任何数与上15,目的就是取后四位。

比如:6&15
    0000-0000 0000-0000 0000-0000 0000-0110
  &0000-0000 0000-0000 0000-0000 0000-1111
------------------------------------------------------------------------------
    0000-0000 0000-0000 0000-0000 0000-0110 =6

然后每次  num = num>>>4; 就会把十六进制数倒序输出来、。
作者: HM刘博    时间: 2013-3-28 21:35
  int temp  = num&15;//这一句的意思是将该十进制的数转成二进制后,取其最后四位


例如:把60转成十六进制(看过基础视频的都知道)

60的二进制:
    111100

我们不用程序实现的方法是:4位一组,转换成十六进制
   11  1100
-------------------
    3       C    所以,60转换成十六进制数是3C


用代码实现过程,将60的二进制数111100其与上15
  111100
&001111
---------------
  001100   这个二进制数的十六进制是C
然后111100向右移4位,得到000011,再和15相与
  000011
&001111
-------------
  000011  这个二进制数的十六进制是3

最后反向打印,得到3C





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