java核心卷一 中文 42页 说: (byte)300实际值为44
下面看看怎么转换:
System.out.println((byte)300); System.out.println(Integer.toBinaryString(300));//输出100101100 //第二步 BigInteger i=new BigInteger("00101100",2);//byte只有8位 截取低8位 System.out.println(i.intValue());//输出44
第二步用到
BigInteger
可以在各种进制间方便转换吗?原来写那么多方法都是白费。只是输入应该是一个字符串。
先想如果java支持0b110101010来表示二进制的话 就直接
System.out.print(0b110101010)
就好,可是不支持 说是因为太长。
百度 java二进制转十进制 找到: 点击打开链接
摘抄备份:
java 二进制转为十进制,十进制转为二进制
2013-02-07 19:48:23| 分类:
Java俱乐部 |举报
|字号 订阅
import java.math.BigInteger;
public class Hello{
public static void main(String args[]){
//10进制->2进制
String a = "121";//输入数值
BigInteger src = new BigInteger(a);//转换为BigInteger类型
System.out.println(src.toString(2));//转换为2进制并输出
//2进制->10进制
String b = "1111001";//输入数值
BigInteger src1= new BigInteger(b,2);//转换为BigInteger类型
System.out.println(src1.toString());//转换为10进制并输出结果
/*
由此可见,有2点要注意:
1. BigInteger的构造函数
BigInteger(String src)默认参数字符串为10进制数值
BigInteger(String src, int x)第2个参数x是指定第一个参数src的进制类型
2. toString方法
toString()默认把数值按10进制数值转化为字符串。
toString(int x)把数值按参数x的进制转化为字符串*/
}
}
另:
将十进制转换成二进制的算法如下:
1.给定一个数;
2.根据十进制转换二进制的思想:把这个数除以2若为单数则为1,为偶数则为0,直到最后一个数为1为止。所以我们要做的就是用你给定的这个数除以2,如果结果为奇数则r=1,否则r=0;如此循环下去,直到这个数〉=1。
3.然后把r的值送到一个数组里面。最后把这个数组里面的内容从后面打印出来就可以了。
import java.util.Scanner;
public class Hi {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("請輸入一個十進制需要轉換為二進制的正整數");
int n=sc.nextInt();
int r;
int i=0;
int[] a=new int[20];
do{
if(n%2==1)
r=1;
else
r=0;
a[i]=r;
n/=2;
i++;
}while(n>0);
System.out.println("十進制轉換為二進制後:");
for(int j=i-1;j>=0;j--){
System.out.print(a[j]);
}
}
}
另:
二进制转换成十进制
import java.util.*;
public class Hello{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个二进制数");
int s = sc.nextInt();
int sum = 0;
int i = 0;
while(s != 0){
sum = (int) (sum + s % 10 * (Math.pow(2,i)));
s = s / 10;
i ++;
}
System.out.println("转换为十进制后为:" + sum);
}
}
(byte)300实际值为44