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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马杜鹏 中级黑马   /  2013-4-3 15:20  /  1530 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马杜鹏 于 2013-4-3 17:38 编辑

求60的16进制,视频中的代码就不写了,不是重点
0-9       'A'     'B'     'C'     'D'    'E'     'F'
           
            65    66      67   
           
           10    11      12     13    14     15  

           12  - 10   =  2   +  'A' =(char)67;


12  - 10   =  2   +  'A' =(char)67;毕老师这一句我看了2遍,感觉还是没弄明白,前面的=左右两边明显不相等?可能我思维没转过来,好笨的哦。

5 个回复

倒序浏览
  1. class java0403d3
  2. {
  3.         public static void hanshu(int x,int y,int z)
  4.         {
  5.                 if(x==0)
  6.                 {
  7.                         System.out.println("您输入的数是:"+0);       
  8.                         return;
  9.                 }
  10.                 if(y==0)
  11.                 {
  12.                         return;
  13.                 }
  14.                 System.out.print("您输入的数转换后为:");
  15.                 char [] shuzu = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
  16.                 char [] arr=new char [32];
  17.                 int pos = arr.length;
  18.                 while (x!=0)
  19.                 {
  20.                         int temp =x&y;
  21.                         arr[--pos]=shuzu[temp];
  22.                         x=x>>>z;
  23.                 }
  24.                         System.out.print(arr);
  25.         }
  26.         public static void to(int x,int y)
  27.         {
  28.                 System.out.println("您输入的数是"+x+",想转换成"+y+"进制。");
  29.                 int a=0,b=0;
  30.                 switch (y)
  31.                 {
  32.                 case 2:
  33.                         a=1;b=1;
  34.                         break;
  35.                 case 8:
  36.                         a=7;b=3;
  37.                         break;
  38.                 case 16:
  39.                         a=16;b=4;
  40.                         break;
  41.                 default:
  42.                         System.out.println("对不起老师没教我转换成你需要的这个进制的方式");
  43.                         break;
  44.                 }
  45.                 hanshu(x,a,b);
  46.         }
  47.         public static void main(String[] args)
  48.         {
  49.                 to(-10,2);//逗号前输入想转化的十进制数,逗号后输入想转换的进制数。
  50.                 //逗号后面只能输入2.8.16. 输入任何非2.8.16的数字都将默认为16进制。
  51.         }       
  52. }
复制代码
给你发一段我自己写的代码 你慢慢看 不懂在问
回复 使用道具 举报
邵震 发表于 2013-4-3 15:35
给你发一段我自己写的代码 你慢慢看 不懂在问

我才刚开始学,你的代码现在消化不了,等我再看几天我在慢慢看。谢谢。
回复 使用道具 举报
黑马杜鹏 发表于 2013-4-3 15:43
我才刚开始学,你的代码现在消化不了,等我再看几天我在慢慢看。谢谢。 ...

12  - 10   =  2   +  'A' =(char)67  这个不是等式  是赋值  60的十六进制是3C  C是这么打的呢

在ascll编码表(自己百度一下)里A是65剩下的字母按顺序往后顺延  所以C是67  A和C之间差2  C带十六进制里代表的是12和10之间也差二 所以老师就以A为基准  12-10求的你要的字母和基准之间的差 再加上A  在JAVA看来就是C了
回复 使用道具 举报
你好    12  - 10   =  2   +  'A' =(char)67    是毕老师写的时候在那个基础上加的,第一个等号是不成立的。你再仔细听下老师的视频 ,毕老师讲的很清楚的。60>>>4得到二进制1100   转换为16进制就是12,而12在16进制中的表现形式为C。所以就要把12变成16进制的字母才行的。2加上A的基数为67,再类型转换就是C。这里就是一个技巧。

建议你再看下视频,我觉得你不要太关注毕老师写的,你要多听他讲的,多思考。多写代码,实践出真知!
回复 使用道具 举报
十六进制数是从右边往左边,每四位写成一位。而后将其转换成 char型的。int转换成char型,需要查ASC码表
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马