Bir int'i Java'da ikili dize gösterimine dönüştürmenin en iyi yolu (ideal olarak, en basit) ne olurdu?
Örneğin, int, 156'dır. Bunun ikili dize temsili "10011100" olur.
Bir int'i Java'da ikili dize gösterimine dönüştürmenin en iyi yolu (ideal olarak, en basit) ne olurdu?
Örneğin, int, 156'dır. Bunun ikili dize temsili "10011100" olur.
Yanıtlar:
Integer.toBinaryString(int i)
Orada da java.lang.Integer.toString (int i int taban) daha uygun olur yöntemi, 2 (ikili) dışında kodunuzu kudreti bir gün sap üsleri eğer.
public static string intToBinary(int n)
{
string s = "";
while (n > 0)
{
s = ( (n % 2 ) == 0 ? "0" : "1") +s;
n = n / 2;
}
return s;
}
Kullanarak daha yol-One java.lang.Integer ilk argüman dize temsilini alabilirsiniz i
yılında radix (Octal - 8, Hex - 16, Binary - 2)
ikinci argüman tarafından belirtilen.
Integer.toString(i, radix)
Misal_
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));
}
Çıktı_
Binary eqivalent of 100 = 1100100
Octal eqivalent of 100 = 144
Decimal eqivalent of 100 = 100
Hexadecimal eqivalent of 100 = 64
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));
}
}
Bu, birkaç dakika önce yazdığım bir şey. Umarım yardımcı olur!
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();
}
}
Tamsayı İkiliye Dönüştür:
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)));
}
}
Çıktı:
Tamsayı Girin:
10
İkili Numarası: 1010
Yerleşik işlevi kullanma:
String binaryNum = Integer.toBinaryString(int num);
İnt işlevini binary'ye dönüştürmek için yerleşik işlevi kullanmak istemiyorsanız, bunu da yapabilirsiniz:
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());
}
}
En basit yaklaşım, sayının garip olup olmadığını kontrol etmektir. Tanım olarak, en sağdaki ikili sayı "1" (2 ^ 0) olacaktır. Bunu belirledikten sonra, numarayı sağa kaydırırız ve özyineleme kullanarak aynı değeri kontrol ederiz.
@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());
}
}
işte benim yöntemlerim, bayt sayısının giderildiğine ikna etmek
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;
}
Integer.toBinaryString () işlevini ( yukarıda gösterildiği gibi) gerçekten kullanmalısınız , ancak herhangi bir nedenle kendinize ait bir şey istiyorsanız:
// 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);
}
Bunun gibi bir şeyle oldukça basit olması gerekir:
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();
}
Bir int'i ikiliye dönüştürmek için while döngüsü de kullanabilirsiniz. Bunun gibi,
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();
}
}
Kaynak ve başvuru - java örneğinde int'i ikiliye dönüştürün .
public class BinaryConverter {
public static String binaryConverter(int number) {
String binary = "";
if (number == 1){
binary = "1";
System.out.print(binary);
return binary;
}
if (number == 0){
binary = "0";
System.out.print(binary);
return binary;
}
if (number > 1) {
String i = Integer.toString(number % 2);
binary = binary + i;
binaryConverter(number/2);
}
System.out.print(binary);
return binary;
}
}