十进制转换为16进制,八进制,二进制通用方法

在介绍这个方法之前,我想来介绍一下移位运算符

          移位运算符分为左移和右移

          左移:相当于把当前的数值的二进制位数左移移位,末尾进行0补齐

          右移:相当于把当前的数值的二进制位数右移移位,分为逻辑右移和算数右移

                   算术右移(>>):若是无符号数,则空缺补0,若是负数,空缺补1

                   逻辑右移(>>>):不管是什么类型,空缺自动补0

                   例如:i=15(0000 1111),移位两位 i>>2 ,i变为0000 0011(3)

                   一般在实际操作中多用>>>

算法思想

         如果是要转换为16进制,则我们把要进行转换的数值num与15(1111)进行‘’运算,得到的结果正好是末尾4位的二进制值,然后用10进制能够进行表示,然后我们把num>>>4,把新得到的最后4位来再次进行计算来结果,如果num为0则不必再进行移位操作。同理转换为8进制或者2进制,我们只需要把进行15(1111)依次的变为7(111)/1(1),然后相应的移位的位数进行修改即可

代码

    /*base代表满多少进1,offset代表右移多少位数*/
    public static void trans(int num,int base ,int offset)
    {
        if(num == 0)
        {
                System.out.println("0");
                return;
        }
        //对应关系表
        char chs []={'0','1','2','3','4',
                    '5','6','7','8',
                    '9','A','B','C',
                    'D','E','F'};
        /*定义一个临时容器*/
        char arr []=new char [32];//因为int是4个字节是32位

        int pos = arr.length;
        while (num!=0)
        {
            int temp = num & base; //与当前位数进行‘与’运算求得最后4/3/1位数的结果
            arr[--pos] = chs[temp];//逆置存储得到的结果
            num = num >>> offset; //右移
        }
        for(int x =pos;x<arr.length;x++)
            System.out.print(arr[x]);
        System.out.println();

    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值