在java中如何用for循环把一个十进制数转换成二进制 5

 我来答
百度网友77f688e
推荐于2017-10-06 · TA获得超过101个赞
知道小有建树答主
回答量:90
采纳率:0%
帮助的人:80万
展开全部
  1. 进制转换的思想

    抓住关键点,不管多少进制,一个数的值是不变。

    先搞清楚进制衡量了什么:n进制实际上代表一个数位与相邻数位之间的权重比,简单点说,相邻两位,一个高位的值代表n个低位。

    一个n进制的数,转换为一个m进制的数,基本过程就是反复的——对n进制表示的m取余,除以n进制表示的m。为什么不直接写除以m呢?举个例子,假设十进制数99转换为2进制,那么过程就是反复——取余,除以2;看起来是除以m了;那反过来,如果把二进制数1100011(十进制数99)转换为十进制呢?这是时候应该对1010(十进制数10)取余,除以1010。

  2. 按问题要求代码如下:

    public static void main(String[] args) {

           int a = NUM; // NUM代表十进制数

           String binary = ""; // binary代表最后二进制字符串

           for(; a != 0; a /= 2) {

                   binary = a % 2 + binary;

           }

    }

  3. 实际上Java中已经提供了这种工具类,Integer.toBinaryString(int a)就可以实现该转换。

风云臣哥
2015-07-26 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:69.8万
展开全部
import java.io.*;
import java.util.*;
public class Test
{
/**因为最终的余数需要倒序输出,采用栈来记录*/
public static void bdzd(int num , LinkedList<Integer>stack){
if(num == 0) {stack.push(0); display(num , stack); return;}

int sig = num / Math.abs(num); //记录符号

num = Math.abs(num); //忽略符号
int qt = num / 2;//商
int rem = num % 2;//余数
stack.push(rem);
num = qt;

while(qt != 0){
qt = num / 2;
rem = num % 2;
num = qt;
stack.push(rem);
}

display(sig , stack); //打印结果
}

public static void display(int sign , LinkedList<Integer>stack){
if(sign < 0){
System.out.print("-"); //计算机中负数的二进制需要用补码表示,与这里不同
}
while(stack.size() > 0){
System.out.print(stack.pop());
}
System.out.println();
}

public static void main(String[] args){
LinkedList<Integer> stack = new LinkedList<Integer>();
for(int i = -5; i <= 5; i++ ){
bdzd(i,stack);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冰火两重天
2011-09-08 · TA获得超过1425个赞
知道小有建树答主
回答量:1489
采纳率:0%
帮助的人:996万
展开全部
static String toBinaryString(int i)
以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
static String toHexString(int i)
以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
static String toOctalString(int i)
以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。
你看下Java API,这个是Integer的方法。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户08647
2011-09-09 · TA获得超过243个赞
知道答主
回答量:478
采纳率:0%
帮助的人:253万
展开全部
用scanf输入type后,scanf只读取了type的数据,而没有读取输入type之后的回车,缓冲区里还有一个回车,所以当再调用gets()后,只读取了一个回车,所以就没有输出了
如果想用gets()读取的话,要先清空缓存,用这个函数fflush(stdin)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我不吃真香
2011-09-08
知道答主
回答量:42
采纳率:0%
帮助的人:14.9万
展开全部
String x;//二进制数
for(num;num>=2;num/2){
x+=num%2;
}
num是十进制的数
对于没有小数的十进制可以转换了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式