Java 控制台做个十进制和二进制互相转换

计算机使用的是二进制,计算机只认识0和1

我们日常使用的是十进制,满十进一

既然计算机只认识0和1,那么我们日常使用的计算机时如何操作呢

这就需要一套二进制和十进制互相转换的公式了

首先说十进制转换二进制,就是不断的用十进制的数字除以2,直到十进制的数字最后为0时,将余数倒序排列就是十进制的二进制表示了

如下,十进制数字12转换为二进制

  • 12 / 2 = 6 余数为 0
  • 6 / 2 = 3   余数为 0
  • 3 / 2 = 1   余数为 1
  • 1 / 2 = 0   余数为 1

然后将余数倒序连起来就是12的二进制表示 12的二进制数为 1100

二进制转换十进制首先将二进制从右到左乘以一串数字,然后再将结果加起来就可以了

这一串数字有个规律,就是开头为1,之后每个数字都是数字本身乘以2

  • 1
  • 1 * 2 = 2
  • 2 * 2 = 4
  • 4 * 2 = 8 
  • ... 
  • n * 2 = 2n
  • ...

如将1100 转换为十进制时,先将二进制从右到左乘以 根据上面规律得到的一串数字

  • 0 * 1 = 0
  • 0 * 2 = 0
  • 1 * 4 = 4
  • 1 * 8 = 8

然后将结果的全部加起来,就是二进制转换十进制的结果

  • 0 + 0 + 4 + 8 = 12

用程序展示十进制转换二进制就是将十进制的数字循环除以2,知道十进制的数字等于0时候结束循环,在循环中,将除以2的余数用字符串拼接起来,拼接的时候先拼接最新的除以2余数,然后再将之前的结果字符串链接起来,结束循环后,字符串就是十进制转换二进制之后的结果了

System.out.print("请输入十进制数字:");
int shi = in.nextInt();
String str = "";
while (shi != 0){
    str = String.valueOf(shi%2) + str;
    shi = shi / 2;
}
System.out.println("二进制结果为:" + str);

用程序展示二进制转换十进制需要先有一个跟二进制数量相同的一串数字,然后倒序循环二进制,乘以所对应的一串数字中的某个数字,然后将结果加起来,乘积结果的和就是二进制转十进制的结果

System.out.print("请输入二进制数字:");
str = in.next();
int bei = 1;
shi = 0;
for (int i = str.length()-1; i >= 0; i--){
    shi += Integer.parseInt(String.valueOf(str.charAt(i))) * bei;
    bei *= 2;
}
System.out.println("十进制数字为:" + shi);

源码地址:https://github.com/sunhouzi2018/Java-Binary

猜你喜欢

转载自www.cnblogs.com/sunhouzi/p/12303106.html