本文目录一览:
- 1、java中如何判断数值是几进制
- 2、java十进制转二进制代码怎么解决?
- 3、java,关于二进制和十六进制的数据转换
- 4、java中十六进制怎么转换为2进制
- 5、Java中怎么表示八进制和十六进制?
- 6、java中二进制怎么表示?
java中如何判断数值是几进制
java没办法判断数字是几进制,java只知道数字,对于java来讲没有进制的概念
我们可以通过java把一个数字n通过某种进制输出,进制只是我们人脑中的概念,java并不知道,但是java会默认以十进制和我们交互,
比如说n,对于java来说就是n,没有什么进制的区别,如果n等于十进制的9那么,对于我们来讲可以让java用十进制输出也就是9,可以让java用2进制输出,也就是11101,也可以让java用8进制输出就是11,但是java并不知道这个数字到底是几进制,
在我们需要输入的时候我们可以告诉java这个数字需要以几进制输入,以ox开头java将以16进制识别,以0开头java将以8进制识别,普通数字java将以10进制识别
java十进制转二进制代码怎么解决?
下面是根据十进制数转二进制数的算法所写的一段Java程序示例代码:
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
Test t = new Test();
double d = 8;
String s = t.decimal2BinaryStr(d);
System.out.println("十进制数"+d+"转成二进制数为:"+s);
}
/**
* 十进制数转二进制数
* @param d 十进制数
* @return 十进制数转换成二进制的字符串
*/
public String decimal2BinaryStr(double d){
String result = decimal2BinaryStr_Inte(d);
result += decimal2BinaryStr_Deci(d);
return result;
}
/**
* 十进制整数部分转二进制数
* @param d 十进制数
* @return 十进制整数部分转换成二进制的字符串
*/
public String decimal2BinaryStr_Inte(double d){
// return Integer.toBinaryString((int)d);
/*
* 本来利用上面的Integer.toBinaryString(int)就可以得到整数部分的二进制结果,
* 但为了展示十进制转二进制的算法,现选择以下程序来进行转换
*/
String result = "";
long inte = (long)d;
int index = 0;
while(true){
result += inte%2;
inte = inte/2;
index++;
if(index%4 == 0){
result+=" ";
}
if(inte==0){
while(index%4!=0){
result+="0";
index++;
}
break;
}
}
char[] c = result.toCharArray();
char[] cc = new char[c.length];
for(int i=c.length; i0; i--){
cc[cc.length-i] = c[i-1];
}
return new String(cc);
}
/**
* 十进制小数部分转二进制
* @param d 十进制数
* @return 十进制小数部分转换成二进制小数的字符串
*/
public String decimal2BinaryStr_Deci(double d){
return decimal2BinaryStr_Deci(d, 0);
}
/**
* 十进制小数部分转二进制
* @param d 十进制数
* @param scale 小数部分精确的位数
* @return 十进制小数部分转换成二进制小数的字符串
*/
public String decimal2BinaryStr_Deci(double d, int scale){
double deci = sub(d,(long)d);
if(deci==0){
return "";
}
//为了防止程序因所转换的数据转换后的结果是一个无限循环的二进制小数,因此给其一个默认的精确度
if(scale==0){
scale = (String.valueOf(deci).length()-2)*4;
}
int index = 0;
StringBuilder inteStr = new StringBuilder();
double tempD = 0.d;
while(true){
if(deci==0 || index==scale){
while(index%4!=0){
inteStr.append("0");
index++;
}
break;
}
if(index==0){
inteStr.append(".");
}
tempD = deci*2;
inteStr.append((int)tempD);
deci = sub(tempD ,(int)tempD);
index++;
if(index%4 == 0){
inteStr.append(" ");
}
}
return inteStr.toString();
}
/**
* 提供精确的减法运算。
* @param v1 被减数
* @param v2 减数
* @return 两个参数的差
*/
public static double sub(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
}
例如将十进制数1234.5转成二进制数为:0100 1101 0010.1000
java,关于二进制和十六进制的数据转换
java进制转换
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()
java中十六进制怎么转换为2进制
java十六进制转换为2进制示例如下:
public class Hex2Binary
{
public static void main(String[] args)
{
String hexString = "ABCD";
System.out.println(hexString2binaryString(hexString));
}
public static String hexString2binaryString(String hexString)
{
if (hexString == null || hexString.length() % 2 != 0)
return null;
String bString = "", tmp;
for (int i = 0; i hexString.length(); i++)
{
tmp = "0000"
+ Integer.toBinaryString(Integer.parseInt(hexString
.substring(i, i + 1), 16));
bString += tmp.substring(tmp.length() - 4);
}
return bString;
}
}
Java中怎么表示八进制和十六进制?
八进制:int
a=031;
//8进制,以数字0开始。
十六进制:int
b=0x1B;
//16进制,以0x开始。
1、八进制数的表达方法:
如何表达一个八进制数呢?如果这个数是
876,我们可以断定它不是八进制数,因为八进制
中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或12345670,那么它是八进
数还是10进制数,都有可能。 所以规定,一个数如果要指明它采用八进制,必须在它前面
上一个0,如:123是十进制,但0123则表示采用八进制。这就是八进制数的表达方法。
2、十六进制数的表达方法
:
如果不使用特殊的书写形式,16进制数也会和10进制相混。随便一个数:9876,就看不出它是
16进制或10进制。
16进制数必须以
0x开头。比如
0x1表示一个16进制数。而1则表示一个
进制。另外如:0xff,0xFF,0X102A,等等。其中的x也也不区分大小写。(注意:0x中的0是数字
0,而不是字母O)
。
java中二进制怎么表示?
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。
1、Java中定义两个数,然后分别打印出它们的二进制表示:
System.out.println("Java二进制7: "+Integer.toBinaryString(7));
System.out.println("Java二进制-7: "+Integer.toBinaryString(-7));
输出:
Java二进制7:
111
Java二进制-7:
11111111111111111111111111111001
可以看到Java中对于数的表示属于有符号的,那么这个是怎么来的?
7好办,直接是111
-7转化二进制的过程:
(1)把-7转化成7,二进制是
111
(2)Java中对于不满32位的int二进制自动补齐,所以变成了
(29个0)111
(3)然后取反
(29个1)000
(4)然后加1
(29个1)001
这就是-7的整个转化过程,那么现在有一个问题,如果有一个文本文件,每一行有八位二进制,表示的范围是(0~255),也就是用一个字节表示的无符号整数,如果现在要把这些二进制转化成整数存到文件里应该怎么做?
文件:
line1
11111110
(254)
line2
00000000
(0)
假设用Java读进了第一行,那么直接打印出来的值是-2,不符合要求,这时让-2变254有两种办法:
(1)用Java自带的方法,Byte.toUnsignedInt((byte)
-2)(ps.-2的二进制表示就是line1),这样打印出来的就是254了
System.out.println(Byte.toUnsignedInt((byte) -2));
输出:254
第二种方法的原理:
Java中-2的二进制表示:11111111111111111111111111111110(这个二进制的后八位就是line1,可以直接打印的话Java把其当做了负数
-2)
Java中255的二进制表示:00000000000000000000000011111111(24个‘0’,8个‘1’)
做与后变为:00000000000000000000000011111110
这样做与后表示的数就是正数了
254。可以想一下,假设每一行用2个字节表示一个无符号数,那么可以把每一行变成正整数用方法2怎么做?
2.Java中的和
''
算术右移,向右移左边补符号位
''
逻辑右移,向右移左边补0
System.out.println("Java二进制-7: "+Integer.toBinaryString(-7));
System.out.println("-72: "+Integer.toBinaryString(-72));
System.out.println("-72: "+Integer.toBinaryString(-72));输出:
Java二进制-7: 11111111111111111111111111111001
-72: 11111111111111111111111111111110
-72: 111111111111111111111111111110 //正常应该这样(00)111111111111111111111111111110左边的两个0不显示