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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class Conversion {
        public Conversion(){}
                //十进制转换二进制思路为 :进将数据与1,得到最末位二进制数,在将原数据无符号向右移1并赋值,
                //重复至多32次得到的数存入数组中在反转遍历就是这个数据的二进制数。
        public static void binary(int x){
               
                int index = 0;//将数组索引初始化
                for (int a = x;a != 0;a = a >>> 1)//根据原理得到数组的长度
                {
                        index++;
                }
                int[] arr = new int[index];
                for(int i = 0;x != 0;i++)//for循环中得出一组二进制完成数据存入数组
                {
                                int y = x & 1;
                                arr[i] = y;
                                x = x >>> 1;
                        }
                System.out.print("二进制的值:");
                for(int b = index-1;0 <= b;b--)//反转遍历并输出二进制的值
                {
                        System.out.print(arr[b]);
                }
                System.out.println();
                }
        public static void octal(int x){
                //十进制转换八进制思路为:进将数据与7,得到最末位八进制数,在将原数据无符号向右移3并赋值,
                //重复至多32次得到的数存入数组中在反转遍历就是这个数据的八进制数。
                int index = 0;
                for (int a = x;a != 0;a = a >>> 3){
                        index++;
                }
                int[] arr = new int[index];
                for(int i = 0;x != 0;i++){
                                int y = x & 7;
                                arr[i] = y;
                                x = x >>> 3;
                        }
                System.out.print("八进制的值:");
                for(int b = index-1;0 <= b;b--){
                        System.out.print(arr[b]);
                }
                System.out.println();
                }
        public static void hex(int x){
                //十进制转换十六进制思路为:进将数据与15,得到最末位十六进制数,在将原数据无符号向右移4并赋值,
                //重复至多32次得到的数存入数组中在反转遍历就是这个数据的十六进制数。
                String s = new String();//创建String对象
                int index = 0;
                for (int a = x;a != 0;a = a >>> 4)
                {
                        index++;
                }
                String[] crr = new String[index];
                for(int i = 0;x != 0;i++)//由于十六进制需要用到单词,需要字符转换,但是前面的忘了
                {
                                int y = x & 15;
                                if(y<10){
                                        crr[i] = s.valueOf(y);//将数组int转换为字符串String
                                }else if(y >= 10){
                                        String[] car = new String[]{"A","B","C","D","E","F"};
                                        crr[i] = car[y-10] ;//
                                }
                                x = x >>> 4;
                        }
                System.out.print("十六进制的值:");
                for(int b = index-1;0 <= b;b--){
                        System.out.print(crr[b]);
                }
                System.out.println();
                }
                       
                }
                  

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马