本文目錄一覽:
- 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不顯示
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/288787.html