java中如何将十进制数字转化成二进制?
如果表达小于2^31-1的正数代码如下:
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);
}
使用字符串的拼接(+)来实现大于2^31-1的数,代码如下:
public void binaryToDecimal(int n){
String str = "";
while(n!=0){
str = n%2+str;
n = n/2;
}
System.out.println(str);
}
可以右移后再与0x01进行&运算 得到第一位的数字判断判断它的第几位上是0,第几位上是1,代码如下:
class ByteMove
{
public static void main(String[] args)
{
int i = 7;
move(i);
}
static void move(int num){
for(int i= 0;i<6;i++){
System.out.println("第"+(i+1)+"位:" + (num >> i & 0x01));
}
}
}
扩展资料:
在windows下编译java文件、执行:
1、先创建一个txt,更改为test.java。
2、编写代码,为输出为holloword。
3、找到cmd,并进行打开cmd。
4、编译java文件,输入命令为javac test.java。
5、如果没有报错,查看当前目录下是否有class文件产生。
6、执行class文件,在命令输入java test,输出为holloword。
java中进行二进制,八进制,十六进制,十进制间进行相互转换
十进制转成十六进制:
Integer.toHexString(int i)
十进制转成八进制
Integer.toOctalString(int i)
十进制转成二进制
Integer.toBinaryString(int i)
十六进制转成十进制
Integer.valueOf("FFFF",16).toString()
八进制转成十进制
Integer.valueOf("876",8).toString()
二进制转十进制
Integer.valueOf("0101",2).toString()
public static String toBinaryString(int i)
public static String toHexString(int i)
public static String toOctalString(int i)
这3个函数都可以将十进制的整数转换成二、一六、八进制数
不过转换后的结果都是字符串的形式
既然得到的是字符串
我想你当然就可以利用string.sub(x-1,x)的方法来判断该x位的数等于0还是1
之后再把x返回出来,那么就知道结果了
比如:
判断10进制10的第2位是不是1,可以用 10 & 2 是否等于0来得到,等于0,该位不是1,否则该位是1,原理, 10和2的2进制代码是:
1010 & 0010 = 0010 != 0 所以10的第2位是1,依次类推,用10&4去判断第3位是不是1.用6判断第2位和第3位是不是同时为1.
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入需要转换的数:");
System.out.println("转换之后为:"+io(toBin(input.nextInt())));
}
static String toBin(int hi) {
if(hi/2 == 0) {return Integer.toString(hi%2);}
return toBin(hi/2)+Integer.toString(hi%2);
}
static String io(String hi) {
if(hi.indexOf("-") >=0) {
hi = hi.replaceAll("-", "");
return "-"+hi;
}
return hi;
}
}