十进制转换二进制通(运算和移位)

我们一般将十进制转换成而今使用的是对二求余然后除二的方法,其实很多时候我们不能更好的理解,我今天讲解一下通过位运算的方法怎么实现进制转换。

思路:

无论是数字还是字母在计算机里存储的都是二进制形式,有人说16进制,16进制也不过是二进制的缩写,本质还是二进制。假如现在有一个数8,计算机里二进制形式应该是1000(我去掉了前缀0),那么需要想办法获取这四位的每一位,然后通过字符串输入就OK,怎么获取一位,我们知道&运算a&b。

aba&b
111
100
010
000

那么每次取一位,然后向右移一位,直到这个数为零:

下面代码:

package Decimalism.ToBinary;

import java.util.Scanner;

public class StringChanged { 
        public static void main(String[] args) { 
            Scanner input = new Scanner(System.in);
            System.out.print("请输入一个十进制数: ");
            while(input.hasNext()) { 
                int num=input.nextInt();
                System.out.print("转换成二进制数为: ");
                System.out.println(toBinary(num));
            }
        }

        public static String toBinary(int num){ 
            //定义一个String用于返回得到的二进制
            String binary="";
            //判断接收的数是否为零,是零直接返回零
            if(num==0){ 
                return "0";
            }
            //判断移位后的数是否为零,为零结束
            while(num!=0){ 
                //获取每一位
                int bit=num&1;
                //将获取的位添加到字符串
                binary=binary+bit;
                //向右移一位
                num=num>>1;
            }
            //我们获得的二进制是反向的所以通过Stringbuffer工具类把字符串反转
            return new StringBuffer(binary).reverse().toString();

        }

    //数学方式
    public static String mathToBinary(int num) { 
        String binary="0";
        if(num==0) { 
            return "0";
        }
        while(num!=0) { 
            int bit=num%2;
            binary=binary+bit;
            num=num/2;

        }
        return new StringBuffer(binary).reverse().toString();
    }
}

通过这个二进制的计算我们可以将十进制转换任意进制比如八进制,十六进制。

八进制:与七,移三位。十六进制:与十五,移四位。

本文转载,查看原文

    原文作者:iqqcode
    原文地址: https://blog.csdn.net/weixin_43232955/article/details/89444686
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞