第一种:除基倒取余法

这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒着依次排列,就构成了转换后的二进制数。

那么,在实际实现中,可以用int的一个数来存储最后的二进制,每次求余后把余数存储在int型数的低位,依次递增。

public void binaryToDecimal(int n){
int t = 0; //用来记录位数
int bin = 0; //用来记录最后的二进制数
int r = 0; //用来存储余数
while(n != 0){
r = n % 2;
n = n / 2;
bin = r * Math().pow(10,t);
t++;
}
System.out.println(bin);
}

但是int型最大只能表示2^31-1 的正数,所以,存储的二进制数位数有限;我们都知道,int在java中的存储范围是32位,则可以使用字符串的拼接(+)来实现,代码如下:

public void binaryToDecimal(int n){
String str = "";
while(n!=0){
str = n%2+str;
n = n/2;
}
System.out.println(str);
}

第二种:利用“移位”操作实现

我们可以直接利用移位操作对一个十进制数进行移位操作,即:将最高位的数移至最低位(移31位),除过最低位其余位置清零,使用& 操作,可以使用和1相与(&),由于1在内存中除过最低位是1,其余31位都是零,然后把这个数按十进制输出;再移次高位,做相同的操作,直到最后一位 ,代码如下。可以说,这是我到目前为止见到的最简单的实现方式了。

public void binaryToDecimal(int n){
for(int i = 31;i >= 0; i--)
System.out.print(n >>> i & 1);
}

说明:由于计算机中存储的都是数的补码,正数的原码、反码、补码都是相同的;而负数的原码、反码、补码是不一样的,补码=原码取反+1(符号位不变)。所以,负数是按照它的补码输出的。

>>>为逻辑移位符,向右移n位,高位补0
>> 算数移位符,也是向右移n位,不同的是:正数高位补0,负数高位补1
<< 移位符,向左移n位,低位补0

第三种:调用API函数

这是处理问题更符合面向对象的一种方式:

public void function1(int n){
String result = Integer.toBinaryString(n);
//int r = Integer.parseInt(result);
//System.out.println(r);
System.out.println(result);
}

小小的建议:  此代码中,可以直接用字符串输出;也可以利用Interger.parseInt()转化为int,但不建议这种方式,当为负数时,int型的表示不了32的一个整数

最新文章

  1. webdriver学习笔记
  2. DP专题训练之HDU 1864 最大报销额
  3. visual C++ 项目和解决方案的区别
  4. Java算法-归并排序
  5. 常用控件产品官方文档/手册/API列表 c#控件文档API列表 asp.net控件产品技术文档中文版
  6. Spket在Eclipse/MyEclipse下的安装和配置(图文教程)
  7. silverlight将字符串转化为控件
  8. 2013 南京理工大学邀请赛B题
  9. Effective C++ 总结(一)
  10. 轻奢当道业绩逆势增长 Kate Spade联手韩国衣恋开拓中国市场_商场报道_中国时尚品牌网
  11. Java中volatile的作用以及用法
  12. Laptop Ubuntu16.04/14.04 安装Nvidia显卡驱动
  13. 解决子级用css float浮动 而父级div没高度不能自适应高度
  14. wqs二分
  15. vue试题
  16. 如何能快速的成为一个年薪20万的Java程序员,你都需要具备哪些技术?史上最全的java学习路线!
  17. python 特别的生成器表达式
  18. linux添加自定义命令
  19. Linux磁盘空间不足处理方法
  20. resource fork, Finder information, or similar detritus not allowed

热门文章

  1. 一步步教你用Prometheus搭建实时监控系统系列(二)——详细分析拉取和推送两种不同模式
  2. 挖地雷dp c++
  3. Day17_购物车
  4. npm跟cnpm的区别
  5. Python Tuple(元组) cmp()方法
  6. PHP highlight_file() 函数
  7. PDO::errorInfo
  8. PHP count_chars() 函数
  9. C/C++编程笔记:C++入门知识丨认识C++的函数和对象
  10. intel:spectre&amp;Meltdown侧信道攻击(四)—— cache mapping