進制轉換Java演算法
❶ java 進制轉換
public static void main(String[] args) {
int x = (int)(Math.random()*1000+1);
System.out.println("隨機數:"+x);
String allNumber = Integer.toString(x,3);
String[] tmmp = allNumber.split("");
String y = "";
for(String str : tmmp){
if (y.length() == 0 ){
y = y + str;
}else{
y=y+","+str;
}
}
System.out.println("生成的三進制:"+y);
// 逆序輸出
StringBuffer sb = new StringBuffer(allNumber);
String tmpx = sb.reverse().toString();
System.out.println("逆序輸出結果:"+tmpx);
//計算十六進制
String hexString = Integer.toString(Integer.parseInt(tmpx),16);
System.out.println("hexString="+hexString);
// 都換成十進制進行比較
int intB = Integer.valueOf(hexString,16);
int intA = Integer.valueOf(y,3);
if(intA>intB){
System.out.println("A>B");
}else if(intA==intB){
System.out.println("A=B");
}else{
System.out.println("A<B");
}
❷ 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實現:整數進制相互轉換
java實現:整數進制相互轉換的方法:
十進制轉為二進制、八進制、十六進制, 用 Integer.toXXXString()方法
(1)十進制轉為二進制: Integer.toBinaryString(int i);
public static String toBinaryString(inti):以二進制(基數 2)無符號整數形式返回一個整數參數的字元串表示形式。
(2)十進制轉為8進制 :Integer.toOctalString(int i);
public static String toOctalString(inti):以八進制(基數 8)無符號整數形式返回一個整數參數的字元串表示形式。(3)十進制轉為16進制: Integer.toHexString(int i);
public static String toHexString(inti):以十六進制(基數 16)無符號整數形式返回一個整數參數的字元串表示形式。
舉例:
Stringbin=Integer.toBinaryString(10);
Stringoct=Integer.toOctalString(10);
Stringhex=Integer.toHexString(10);
2.十六進制、八進制、二進制轉為十進制(有兩種方法):parseInt() 和valueOf()。
Integer.parseInt(String s,int radix);
public static int parseInt(String s,int radix) throws NumberFormatException{}使用第二個參數作為指定的基數,將字元串參數解析為有符號的整數;
Integer.valueOf(String s,int radix);
public static Integer valueOf(Strings, intradix) throws NumberFormatException{}返回一個 Integer 對象,該對象中保存了用第二個參數提供的基數進行解析時從指定的 String 中提取的值。
舉例:
try{
inti=Integer.parseInt("a",16);
//輸出為10進制數10
System.out.println(i);
}catch(Exceptione){
e.printStackTrace();
}
try{
//十六進制轉成十進制
Stringhex=Integer.valueOf("FFFF",16).toString();
System.out.println(hex);
//八進制轉成十進制
Stringoct=Integer.valueOf("12",8).toString();
System.out.println(oct);
//二進制轉十進制
Stringbin=Integer.valueOf("0101",2).toString();
System.out.println(bin);
}catch(Exceptione){
e.printStackTrace();
}
❹ Java里的十二進制,六進制,二進制,分別怎麼轉換
轉換為2的幾何級數倍進制比較容易,其他的就不方便了。
先說和10進制的轉換:
倒序將2進制數編冪數,例如10101010從後向前冪數依次為7654321,所以它轉換為10進制就是1*2^7+0*2^6+1*2^5+0^2^4+1*2^3+0^2^2+1^2^1+0^2^0=170,這種演算法適用於將任意進制轉換為10進制,只要將底數替換即可。
下面說2的幾何級數倍的演算法:
一般就是將2進制按2的級數進行分段,比方說8進制(8是2的3次方),將2進制分為每3位一段進行轉換,每段單獨按十進制轉換即可。
10101010,分為10|101|010,然後每段進行單獨轉換,10轉換後為2,101轉換後為5,010轉換後為2,所以10101010(2)=252(8)。
其他進制一般演算法就是先將2進制轉換為10進制,再用短除法轉換為其他進制,短除法我記不清怎麼個演算法了,並不是算公約數之類的那個短除法,借位演算法比較特殊,只不過最後余數作為最後一位。
例如170(10)進制就使用170=332(7)
❺ 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);
/*
❻ java編程:進制轉換
Java中的進制轉換是通過基本數據類型類中的相應方法實現的。舉個例子:
public class IntegerChange {
public static void main(String[] args) {
String nm = new String("445");
int n = Integer.parseInt(nm);
System.out.println("十進製表示:" + n);
System.out.println("二進製表示:" + Integer.toBinaryString(n));
System.out.println("八進製表示:" + Integer.toOctalString(n));
System.out.println("十六進製表示:" + Integer.toHexString(n));
}
}
輸出結果:
十進製表示:445
二進製表示:110111101
八進製表示:675
十六進製表示:1bd
至於八進制轉換為十進制,十六進制,二進制等等都有相應的方法,具體的可以查看Java幫助文檔。
希望對你有所幫助。
❼ 用JAVA把二進制數轉換成十進制數。
二進制轉十進制
Integer.valueOf("0101",2).toString()
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("輸入一個二進制數: ");
String a = sc.nextLine();
int d = Integer.parseInt(a, 2); // 2進制
int o = Integer.parseInt(a, 8); // 8進制
System.out.println("二進制轉為十進制: " + d);
System.out.println("八進制轉為十進制: " + o);
計算機內部使用二進製表示數
二進制與十進制的轉換是比較復雜的。比如我們要讓計算機計算50+50=?,那麼首先要把十進制的50轉換成二進制的「50」——110010,這個過程要做多次除法,而計算機對於除法的計算是最慢的。把十進制的50轉換成二進制的110010還不算完,計算出結果1100100之後還要再轉換成十進制數100,這是一個做乘法的過程,對計算機來說雖然比除法簡單,但計算速度也不快。
以上內容參考:網路-十進制
❽ Java中如何實現十進制到其他進制的轉換
Java轉換十進制為其他進制的兩種方法
利用printf():view plain to clipboardprint?
public class TigerNumberDemo {
public static void main(String[] args) {
// 輸出 19 的純喊搭十進製表示
System.out.printf("%d%n", 19);
// 輸出 19 的八進製表示
System.out.printf("%o%n", 19);
// 輸出 19 的十六進製表示
System.out.printf("做拿%x%n", 19);
}
}
public class TigerNumberDemo { public static void main(String[] args) { // 輸出 19 的十進製表示
System.out.printf("%d%n", 19); // 輸出 19 的八進製表示
System.out.printf("%o%n", 19); // 輸滲則出 19 的十六進製表示
System.out.printf("%x%n", 19);
}}
利用Integer類方法:view plain to clipboardprint?
public class NumberDemo {
public static void main(String[] args) {
// 十進制 19 轉成二進制 10011
System.out.println(Integer.toBinaryString(19));
// 十進制 19 轉成十六進制 13
System.out.println(Integer.toHexString(19));
// 十進制 19 轉成八進制 23
System.out.println(Integer.toOctalString(19));
}
}
❾ java裡面二進制 八進制 十進制 十六進制怎麼互相轉換,有什麼規律
=============(正)十進制轉二進制
除二將余數倒置
eg: 127 /2
商:63 /2 31 /2 15 /2 7 /2 3 /2 1
余數:1 1 1 1 1 1
1111111
=============(負)十進制轉二進制
1、先求負數絕對值的二進制
2、將得到的二進制完全取反+1
eg: -12
1、0000 1100
2、1111 0011 + 1 = 1111 0100
=============(正)十進制轉八進制
除八將余數倒置
eg:54 /8 =66
6
6
=============(負)十進制轉八進制
1、先將十進制轉為二進制
2、再將二進制轉為八進制
eg:-32
1、0010 0000
2、1110 0000
3、三位三位轉
340
=============十進制轉十六進制
1、先將十進制轉為二進制
2、將二進制轉為十六進制
=============二進制轉為十進制
(正)二進制位上的各個數字乘以以2為底數,以自然數為次冪(自然數從0開始)
0110 1011 1*2^0 + 1*2^1 + 0*2^2 + 1*2^3 + 0*2^4 + 1*2^5 + 1*2^6 = 107
(負)
1、首先得到負號
2、將該二進制數取反+1
3、將得到的數轉為十進制加上負號。
=============二進制轉八進制
(1)將二進制三個三個分為一組,分別求出每組二進制的八進制值,將所得到的值依次排開
(2) 1、將二進制轉為十進制
2、將十進制轉為八進制
============二進制轉十六進制
將二進制四個四個分為一組,分別求出每組二進制的十六進制值,將所得到的值依次排開
============八進制轉二進制
(1)將八進制各個位上的數單個轉為二進制,不足三位的補0
eg:127 001 010 111
(2) 1、將八進制轉為十進制
2、再將十進制轉為二進制
============八進制轉十進制
八進制位上的各個數字乘以以8為底數,以自然數為次冪(自然數從0開始)
543 3*8^0 + 4*8^1 + 5*8^2 = 355
============八進制轉十六進制
1、先將八進制轉為二進制
2、再將所得的二進制轉為十六進制
============十六進制轉二進制
將十六進制各個位上的數單個轉為二進制,不足四位的補0
eg:127 0001 0010 0111
============十六進制轉其他進制
都需要先轉為二進制,再轉為其他進制
❿ 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));
}
}
}