进制转换(十进制转二进制,八进制,十六进制)

蔚落 2021-09-18 11:46 641阅读 0赞

具体规则不说了,直接上代码。今天整理出来,供小伙伴(尤其是开始学习的小伙伴)参考学习。。。

  1. class test
  2. {
  3. public static void main(String[] args)
  4. {
  5. toBin(6);
  6. toEight(20);
  7. toHex(60);
  8. }
  9. //十进制转二进制
  10. public static void toBin(int num){
  11. char[] chs={'0','1'};
  12. char[] arr=new char[32];
  13. int pos=arr.length;
  14. while(num!=0){
  15. int temp=num&1;
  16. arr[--pos]=chs[temp];
  17. num=num>>>1;
  18. }
  19. for(int i=pos;i<arr.length;i++){
  20. System.out.print(arr[i]);
  21. }
  22. }
  23. //十进制转八进制
  24. public static void toEight(int num){
  25. char[] chs={'0','1','2','3','4','5','6','7','8'};
  26. char[] arr=new char[32];
  27. int pos=arr.length;
  28. while(num!=0){
  29. int temp=num&7;
  30. arr[--pos]=chs[temp];
  31. num=num>>>3;
  32. }
  33. for(int i=pos;i<arr.length;i++){
  34. System.out.print(arr[i]);
  35. }
  36. }
  37. //十进制转十六进制
  38. public static void toHex(int num){
  39. char[] chs={'0','1','2','3','4','5','6','7','8','9',
  40. 'A','B','C','D','E','F'};
  41. char[] arr=new char[8];
  42. int pos=arr.length;
  43. while(num!=0){
  44. int temp=num&15;
  45. arr[--pos]=chs[temp];
  46. num=num>>>4;
  47. }
  48. for(int i=pos;i<arr.length;i++){
  49. System.out.print(arr[i]);
  50. }
  51. }
  52. }

进制转化优化(写一种方法,提高代码的复用性。。。)

num表示的是十进制数。base表示要转化的目标进制。offset表示需要右移的位数
有上述代码,我们可以看到,对于二进制,offset=1; 对于八进制,offset=3;对于十六进制,offset=4。

  1. public static void trans(int num,int base,int offset){
  2. char[] chs[]={'0','1','2','3','4','5','6','7',
  3. '8','9','A','B','C','D','E','F'};
  4. int[] arr=new int[32];
  5. int pos=arr.length;
  6. while(num!=0){
  7. int temp=num&base;
  8. arr[--pos]=chs[temp];
  9. temp>>>offset;
  10. }
  11. for(int i=pos;i<arr.length;i++){
  12. System.out.print(arr[i]);
  13. }
  14. }

发表评论

表情:
评论列表 (有 0 条评论,641人围观)

还没有评论,来说两句吧...

相关阅读