十进制转化为二进制,八进制,十六进制

落日映苍穹つ 2021-09-14 08:44 682阅读 0赞

十进制转化为二进制,八进制,十六进制,不管输入的是正数还是负数,都行。

其代码如下:

  1. public class Demo15 {
  2. public static void main(String[] args){
  3. toBin(80); //十进制-->二进制
  4. System.out.println();
  5. toBin(-80); //十进制-->二进制
  6. System.out.println();
  7. toBa(80); //十进制-->八进制
  8. System.out.println();
  9. toBa(-80); //十进制-->八进制
  10. System.out.println();
  11. toHex(80); //十进制-->十六进制
  12. System.out.println();
  13. toHex(-80); //十进制-->十六进制
  14. }
  15. /*
  16. * 十进制-->二进制
  17. */
  18. public static void toBin(int num){
  19. trans(num,1,1);
  20. }
  21. /*
  22. * 十进制-->八进制
  23. */
  24. public static void toBa(int num){
  25. trans(num,7,3);
  26. }
  27. /*
  28. * 十进制-->十六进制
  29. */
  30. public static void toHex(int num){
  31. trans(num, 15, 4);
  32. }
  33. public static void trans(int num,int base,int offset){
  34. //num指的是要传进的十进制数,base是指如果是二进制,base=1,八进制:base=7,十六进制:base=15;
  35. //offset是指要右移的位数,如果是二进制,offset=1,八进制:offset=3,十六进制:offset=4
  36. if(num==0){
  37. System.out.println(0);
  38. return ;
  39. }
  40. char[] chs={'0','1','2','3'
  41. ,'4','5','6','7'
  42. ,'8','9','A','B'
  43. ,'C','D','E','F'};
  44. char[] arr=new char[32];
  45. int pos=arr.length;
  46. while(num!=0){
  47. int temp=num & base;
  48. arr[--pos]=chs[temp];
  49. num=num>>>offset;
  50. }
  51. for(int x=pos;x<arr.length;x++){
  52. System.out.print(arr[x]);
  53. }
  54. }
  55. }

输出结果为:

1010000
11111111111111111111111110110000
120
37777777660
50
FFFFFFB0

发表评论

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

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

相关阅读