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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 常佳杰 中级黑马   /  2012-6-23 16:02  /  1326 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class Test{

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                
  7.                         tohex(61);
  8.                         tobit(90);
  9.         }
  10.         public static void tohex(int num){
  11.                 StringBuffer sb = new StringBuffer();
  12.                 for(int x=0;x<8;x++){
  13.                         int temp = num&15;[color=Red]//打印结果是0000003d,为什么这改成int temp =                                       num%15;打印结果就成了00000031了,
  14.                                             //为什么结果就错了呢? &和%这两个符号有什么区别?[/color]
  15.                         if(temp>9){
  16.                                 sb.append((char)((temp-10)+'a'));
  17.                         }
  18.                         else
  19.                                 sb.append(temp);
  20.                     num = num>>>4;
  21.                 }
  22.                 System.out.println(sb.reverse());
  23.         }
  24.     public static void tobit(int num){
  25.             StringBuffer sb = new StringBuffer();
  26.             while(num>0){
  27.                     sb.append(num%2)[color=Red];//打印结果是111,竟然改成&,打印结果就成了022,这是怎么回事?请详解![/color]
  28.                     num=num/2;
  29.             }
  30.             System.out.println(sb.reverse());
  31.     }
  32. }
复制代码
想不通..

3 个回复

正序浏览
&和%这两个符号不是同一个功能
%是算术运算符 取的是余数
& 位运算符  取的是二进制中的有效位。
回复 使用道具 举报
&是位与运算
比如1&15在内存中就是:0000 0001
                              &    1111 1111
                                    0000 0001
0和1 &1都等于他本身,
这里用位与是为了取到那四位,
%是取模运算,
比如5%12=2
你还不知道%和&是干嘛的,还是先去看看运算符那块,还有通过位运算转进制的原理再写代码吧,
回复 使用道具 举报
你的问题在我眼里和这个问题没什么区别
int x = 2,int y = 1;
int z = x+y;   ///为什么这里讲+换成-就不行了,+和-有什么区别
System.out.println(z);
//想不通。
规则是人家定的,你不想按照人家的规则来要么就不用人家的东西,你自己定义运算符让2+1=1,2-1=3。你这么做,只要自己觉得爽怎么都行对么?
懒得说太多了,这两个运算符一个是位运算符,一个是求模的运算符。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马