问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-05-14 20:42

我来回答

5个回答

热心网友 时间:2023-10-29 06:29

进制转换的思想

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

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

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

按问题要求代码如下:

public static void main(String[] args) {

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

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

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

               binary = a % 2 + binary;

       }

}

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

热心网友 时间:2023-10-29 06:29

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);
}
}
}

热心网友 时间:2023-10-29 06:29

static String toBinaryString(int i)
以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
static String toHexString(int i)
以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
static String toOctalString(int i)
以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。
你看下Java API,这个是Integer的方法。

热心网友 时间:2023-10-29 06:30

用scanf输入type后,scanf只读取了type的数据,而没有读取输入type之后的回车,缓冲区里还有一个回车,所以当再调用gets()后,只读取了一个回车,所以就没有输出了
如果想用gets()读取的话,要先清空缓存,用这个函数fflush(stdin)

热心网友 时间:2023-10-29 06:31

String x;//二进制数
for(num;num>=2;num/2){
x+=num%2;
}
num是十进制的数
对于没有小数的十进制可以转换了

热心网友 时间:2023-10-29 06:29

进制转换的思想

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

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

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

按问题要求代码如下:

public static void main(String[] args) {

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

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

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

               binary = a % 2 + binary;

       }

}

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

热心网友 时间:2023-10-29 06:29

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);
}
}
}

热心网友 时间:2023-10-29 06:30

static String toBinaryString(int i)
以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
static String toHexString(int i)
以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
static String toOctalString(int i)
以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。
你看下Java API,这个是Integer的方法。

热心网友 时间:2023-10-29 06:30

用scanf输入type后,scanf只读取了type的数据,而没有读取输入type之后的回车,缓冲区里还有一个回车,所以当再调用gets()后,只读取了一个回车,所以就没有输出了
如果想用gets()读取的话,要先清空缓存,用这个函数fflush(stdin)

热心网友 时间:2023-10-29 06:31

String x;//二进制数
for(num;num>=2;num/2){
x+=num%2;
}
num是十进制的数
对于没有小数的十进制可以转换了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 如何把一个十进制数转为二进制数的Java程序? 281封信大结局关晓霞唱完心碎打分结束后和于枫拥抱的时候放的什么背景音乐!谢谢 JAVA中的十进制如何转换为二进制? 一年级好词好句短一点 好词好句短一点 自己QQ被盗号了至尊宝被别人绑定手机号了 身份证人脸是自己的 有什么办法找回(可钱) 如果qq被别人绑定了至尊宝怎么办啊 农行环球商旅信用卡网点申请多久下卡 炖排骨可以放老鸭汤料吗? 老鸭汤能炖排骨怎么做 贷款买车好,还是全款买车好? 春节风俗习惯及寓意 排骨老鸭汤可以一起炖吗还可以加入海苔吗? 老鸭汤鸡汤,排骨汤要怎么炖才能炖出鲜美可口,放什么调料最好吃? 怎样清除车内异味 深圳汽车可以二次抵押贷款吗 银杏叶片有啥问题召回 威马汽车送的家用充电桩是什么样子的 002082栋梁新材重组成功了吗 万邦德制药集团股份有限公司怎么样? 用Java输入一个十进制,转换成二进制并输出 JAVA中的十进制转换为二进制 java代码实现:十进制转换成2进制 请问JAVA如何利用非函数的方法用数组将十进制转换成二进制? 一段简单的java代码,十进制转二进制 java中用数组存储十进制转换成二进制,此处的i--对吗,求解释。 2十14健康管理家里一定要是一个人吗? 在家闲着没事应该养些什么花? 杭州2+12健康管理是什么意思 请问工资表怎么做呀,我们都是固定工资 2019年武汉社保工资申报是怎么弄的,工资申报表直接导出来?劳动工资报表和财务报表怎么做的 深圳计划生育证明在哪里办 我是做餐饮的,主要卖鸡,大神们帮我想个好听又大气点的店名, 我准备开家做白切鸡为主的鸡肉类的餐厅!苦想店名而不得解,望有志之同仁帮忙取名!店名简单易懂。谢谢 想开个以鸡为主的餐馆不知起什么店名请帮忙谢谢 我想开一家以盐焗口味为主的鸡和鸭这样的小吃店,麻烦给其个店名,店名当中最好把盐焗两个字加上去。 我被盗,申诉也失败,还有什么办法能找回来? 忘记密码了!手机号也没用了!有什么办法能找回来? 用以前的号注册微信,那个手机号不用了,微信掉线了,密码确忘了,请问有什么办法再找回来吗?_百度问一问 你好 我的微信被盗了 我现在只知道和密码 什么信息都不知道 该怎么办,还有什么办法找回?