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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class Test3
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int n=170; //10011
  6.                
  7.                 //toBinary(n);
  8.                
  9.                 //toOctal(n);

  10.                 toHex(n);
  11.                 /*
  12.                         输出效果:19的二进制表示形式:10011

  13.                         要得到这个效果,可以将每次操作后得到的值保存到数组中,最后将数组的元素打印出来.
  14.                 */
  15.         }
  16.         //转换成十六进制
  17.         public static void toHex(int n){
  18.                 char[] arr=new char[8];
  19.                 int index=0;
  20.                
  21.                 while(true){

  22.                         int code=n%16;    //1
  23.                         /*
  24.                                 因为16进制中没有10,11,12,13,14,15  而是用a,b,c,d,e,f来代表

  25.                         */
  26.                         char c=0;

  27.                         if(code>9){
  28.                                 c=(char)(code-10+'a');   //13-10+'a'==99  强转  'c'
  29.                         }else{
  30.                                 c=(char)(code+'0');  //1+'0'==49   强转  '1'
  31.                         }
  32.                        
  33.                         arr[index++]=c;  //index++是为了将下一个得到的值保存到数组的下一个位置
  34.                         n=n/16;

  35.                         if(n<16){                       
  36.                                
  37.                                 arr[index]=(n>9)?(char)(n-10+'a'):(char)(n+'0');
  38.                                 break;
  39.                         }
  40.                 }

  41.                 for(int i=index;i>=0;i--){
  42.                        
  43.                         System.out.print(arr[i]);
  44.                 }
  45.         }
  46.         //转换成八进制
  47.         public static void toOctal(int n){
  48.                 int[] arr=new int[11];
  49.                 int index=0;
  50.                
  51.                 while(true){

  52.                         int code=n%8;    //1
  53.                         arr[index++]=code;  //index++是为了将下一个得到的值保存到数组的下一个位置
  54.                         n=n/8;

  55.                         if(n<8){
  56.                                 arr[index]=n;
  57.                                 break;
  58.                         }
  59.                 }

  60.                 for(int i=index;i>=0;i--){
  61.                        
  62.                         System.out.print(arr[i]);
  63.                 }
  64.         }

  65.         //n代表的是要转换的数字   转换二进制
  66.         public static void toBinary(int n){
  67.                 int[] arr=new int[32];
  68.                 int index=0;
  69.                
  70.                 while(true){

  71.                         int code=n%2;    //1
  72.                         arr[index++]=code;  //index++是为了将下一个得到的值保存到数组的下一个位置
  73.                         n=n/2;

  74.                         if(n<2){
  75.                                 arr[index]=n;
  76.                                 break;
  77.                         }
  78.                 }

  79.                 for(int i=index;i>=0;i--){
  80.                        
  81.                         System.out.print(arr[i]);
  82.                 }
  83.         }
  84. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
自己顶一下吧
回复 使用道具 举报
没人对这个有研究么????
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马