2010-03-09 45 views

Trả lời

214
Integer.toBinaryString(int i) 
+0

Đó là thuận tiện! Có một phương pháp tương tự cho thời gian dài? –

+1

http://java.sun.com/j2se/1.3/docs/api/java/lang/Long.html –

+28

@ ttreat31: Tôi không có ý nói điều này nghe có vẻ lén lút, nhưng bạn thực sự cần có tài liệu (trong này case JavaDoc) sẵn sàng trong tay bất cứ khi nào bạn đang lập trình. Bạn không cần phải hỏi: là một phương pháp tương tự của họ trong thời gian dài; bạn nên tìm kiếm nó hơn là nhập nhận xét. –

15

Một hơn gì theo cách Bằng cách sử dụng java.lang.Integer bạn có thể nhận chuỗi đại diện của đối số đầu tiên i trong radix (Octal - 8, Hex - 16, Binary - 2) xác định bởi đối số thứ hai.

Integer.toString(i, radix) 

Example_

private void getStrtingRadix() { 
     // TODO Auto-generated method stub 
     /* returns the string representation of the 
      unsigned integer in concern radix*/ 
     System.out.println("Binary eqivalent of 100 = " + Integer.toString(100, 2)); 
     System.out.println("Octal eqivalent of 100 = " + Integer.toString(100, 8)); 
     System.out.println("Decimal eqivalent of 100 = " + Integer.toString(100, 10)); 
     System.out.println("Hexadecimal eqivalent of 100 = " + Integer.toString(100, 16)); 
    } 

OutPut_

Binary eqivalent of 100 = 1100100 
Octal eqivalent of 100 = 144 
Decimal eqivalent of 100 = 100 
Hexadecimal eqivalent of 100 = 64 
4
public class Main { 

    public static String toBinary(int n, int l) throws Exception { 
     double pow = Math.pow(2, l); 
     StringBuilder binary = new StringBuilder(); 
     if (pow < n) { 
      throw new Exception("The length must be big from number "); 
     } 
     int shift = l- 1; 
     for (; shift >= 0 ; shift--) { 
      int bit = (n >> shift) & 1; 
      if (bit == 1) { 
       binary.append("1"); 
      } else { 
       binary.append("0"); 
      } 
     } 
     return binary.toString(); 
    } 

    public static void main(String[] args) throws Exception { 
     System.out.println(" binary = " + toBinary(7, 4)); 
     System.out.println(" binary = " + Integer.toString(7,2)); 
    } 
} 
+0

Kết quả nhị phân = 0111 binary = 111 –

+1

String hexString = String.format ("% 2s", Integer.toHexString (h)). Thay thế ('', '0'); –

4

Đây là điều mà tôi đã viết một vài phút trước chỉ rối tung xung quanh. Hy vọng nó giúp!

public class Main { 

public static void main(String[] args) { 

    ArrayList<Integer> powers = new ArrayList<Integer>(); 
    ArrayList<Integer> binaryStore = new ArrayList<Integer>(); 

    powers.add(128); 
    powers.add(64); 
    powers.add(32); 
    powers.add(16); 
    powers.add(8); 
    powers.add(4); 
    powers.add(2); 
    powers.add(1); 

    Scanner sc = new Scanner(System.in); 
    System.out.println("Welcome to Paden9000 binary converter. Please enter an integer you wish to convert: "); 
    int input = sc.nextInt(); 
    int printableInput = input; 

    for (int i : powers) { 
     if (input < i) { 
      binaryStore.add(0);  
     } else { 
      input = input - i; 
      binaryStore.add(1);    
     }   
    } 

    String newString= binaryStore.toString(); 
    String finalOutput = newString.replace("[", "") 
      .replace(" ", "") 
      .replace("]", "") 
      .replace(",", ""); 

    System.out.println("Integer value: " + printableInput + "\nBinary value: " + finalOutput); 
    sc.close(); 
} 

}

2

Sử dụng built-in chức năng:

String binaryNum = Integer.toBinaryString(int num); 

Nếu bạn không muốn sử dụng được xây dựng trong chức năng để chuyển đổi int thành dạng nhị phân sau đó bạn cũng có thể làm điều này:

import java.util.*; 
public class IntToBinary { 
    public static void main(String[] args) { 
     Scanner d = new Scanner(System.in); 
     int n; 
     n = d.nextInt(); 
     StringBuilder sb = new StringBuilder(); 
     while(n > 0){ 
     int r = n%2; 
     sb.append(r); 
     n = n/2; 
     } 
     System.out.println(sb.reverse());   
    } 
} 
3

Sử dụng built-in chức năng:

String binaryNum = Integer.toBinaryString(int num); 

Nếu bạn không muốn sử dụng được xây dựng trong chức năng để chuyển đổi int thành dạng nhị phân sau đó bạn cũng có thể làm điều này:

import java.util.*; 
public class IntToBinary { 
    public static void main(String[] args) { 
     Scanner d = new Scanner(System.in); 
     int n; 
     n = d.nextInt(); 
     StringBuilder sb = new StringBuilder(); 
     while(n > 0) 
     { 
      int r = n%2; 
      sb.append(r); 
      n = n/2; 
     } 
     System.out.println(sb.reverse());   
    } 
} 
4

Chuyển đổi Integer để Binary:

import java.util.Scanner; 

public class IntegerToBinary { 

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 

     System.out.println("Enter Integer: "); 
     String integerString =input.nextLine(); 

     System.out.println("Binary Number: "+Integer.toBinaryString(Integer.parseInt(integerString))); 
    } 

} 

Đầu ra:

Nhập số nguyên:

Số nhị phân: 1010

+0

Quảng bá quá mức một sản phẩm/tài nguyên cụ thể (mà tôi đã xóa tại đây) có thể được cộng đồng coi là ** spam **. Hãy xem [trợ giúp], đặc biệt [Loại hành vi nào được mong đợi của người dùng?] (Phần cuối của http://stackoverflow.com/help/behavior): _Không vượt quá xúc tiến tự_. Bạn cũng có thể quan tâm [Làm cách nào để quảng cáo trên Stack Overflow?] (Http://stackoverflow.com/help/advertising). – Tunaki

1

Phương pháp đơn giản nhất là để kiểm tra xem hay không là số lẻ. Nếu có, theo định nghĩa, số nhị phân bên phải của nó sẽ là "1" (2^0). Sau khi chúng tôi đã xác định điều này, chúng tôi bit chuyển số sang bên phải và kiểm tra cùng một giá trị bằng cách sử dụng đệ quy.

@Test 
public void shouldPrintBinary() { 
    StringBuilder sb = new StringBuilder(); 
    convert(1234, sb); 
} 

private void convert(int n, StringBuilder sb) { 

    if (n > 0) { 
     sb.append(n % 2); 
     convert(n >> 1, sb); 
    } else { 
     System.out.println(sb.reverse().toString()); 
    } 
} 
11
public static string intToBinary(int n) 
{ 
    string s = ""; 
    while (n > 0) 
    { 
     s = ((n % 2) == 0 ? "0" : "1") +s; 
     n = n/2; 
    } 
    return s; 
} 
0

này nên được khá đơn giản với một cái gì đó như thế này:

public static String toBinary(int number){ 
    StringBuilder sb = new StringBuilder(); 

    if(number == 0) 
     return "0"; 
    while(number>=1){ 
     sb.append(number%2); 
     number = number/2; 
    } 

    return sb.reverse().toString(); 

} 
1

Điều này có thể được thể hiện bằng giả như:

while(n > 0): 
    remainder = n%2; 
    n = n/2; 
    Insert remainder to front of a list or push onto a stack 

Print list or stack 
2

ở đây là phương pháp của tôi, nó là một một chút thuyết phục rằng số lượng byte đã được chỉnh sửa

private void printByte(int value) { 
String currentBinary = Integer.toBinaryString(256 + value); 
System.out.println(currentBinary.substring(currentBinary.length() - 8)); 
} 

public int binaryToInteger(String binary) { 
char[] numbers = binary.toCharArray(); 
int result = 0; 
for(int i=numbers.length - 1; i>=0; i--) 
    if(numbers[i]=='1') 
    result += Math.pow(2, (numbers.length-i - 1)); 
return result; 
} 
0

Bạn cũng có thể sử dụng vòng lặp while để chuyển đổi int thành nhị phân. Như thế này,

import java.util.Scanner; 

public class IntegerToBinary 
{ 
    public static void main(String[] args) 
    { 
     int num; 
     String str = ""; 
     Scanner sc = new Scanner(System.in); 
     System.out.print("Please enter the a number : "); 
     num = sc.nextInt(); 
     while(num > 0) 
     { 
     int y = num % 2; 
     str = y + str; 
     num = num/2; 
     } 
     System.out.println("The binary conversion is : " + str); 
     sc.close(); 
    } 
} 

Nguồn và tham chiếu - convert int to binary in java ví dụ.

0

Bạn thực sự nên sử dụng Integer.toBinaryString() (như hình trên), nhưng nếu vì một lý do bạn muốn riêng của bạn:

// Like Integer.toBinaryString, but always returns 32 chars 
public static String asBitString(int value) { 
    final char[] buf = new char[32]; 
    for (int i = 31; i >= 0; i--) { 
    buf[31 - i] = ((1 << i) & value) == 0 ? '0' : '1'; 
    } 
    return new String(buf); 
} 
Các vấn đề liên quan