简体   繁体   中英

How do you make a byte into a binary number and not to a string in java

When I want to print the binary number of a byte, I have to do:

byte byte1 = 16;
String byteString = Integer.toBinaryString(byte1);
System.out.println(byteString);

This makes the byte into a string, but when I try to parse it into a byte, it makes it into a base 10 number again, Is there a way to make a byte into a binary number byte, and not to a base-10? I want to make it so that if you printed the byte, it would print the binary. do you have to tell it to print the Binary every time?

I want to know if there is a way to make it print the binary representation of the byte every time, instead of having to convert it to a binary string every time, and without making a new string variable to print.

You don't need a String variable because you can just do this:

System.out.println(Integer.toBinaryString(a));

but there is no way to make the conversion happen automatically without using toBinaryString . If this code is too long, you could make a simple method like this

public static void printInBinary(int a) {
    System.out.println(Integer.toBinaryString(a));
}

As you have identified, both approaches will result in unnecessary work if you need to print the same number repeatedly, but you do not need to worry about this. Worrying about stuff like that is a waste of time (99% of the time).

Because of programmer efficiency.

At physical level, computers do not have the concept of neither "binary" numbers nor "decimal" numbers (I mean, in form of "110011" or "123"). It's all electrical impulses in there. When you are printing a number onto the screen, it ALWAYS has to convert the "impulses" into characters on your screen in one way or another.

When the number is stored in memory as a "number", it is not compatible with neither decimal nor binary representation. Converting the "number" into a "string" of any kind requires approximately same amount of computing power.

Let's say you have this code:

byte byte1 = 16;
String byteString = Integer.toBinaryString(byte1);
System.out.println(byteString);
System.out.println(byte1);

In reality, the operations performed by the cpu would look something like this:

String byteString = Integer.toBinaryString(byte1);
String decimalString = toDecimalString(byte1);
System.out.println(byteString);
System.out.println(decimalString);

That is, unless you save your number as String already, your CPU has to do extra work to convert it into either decimal or hexadecimal or binary representation. It is just that by default a decimal representation is chosen. And, there is no way to somehow "switch" this default representation neither for one variable nor globally for entire application.

Therefore, you need to convert it to binary every time you want a variable of any numeric type printed on the screen as a character.

What about this:

byte byte1 = 76;
StringBuilder byteString = new StringBuilder();
for (int i = 128; i > 0; i /= 2) {
    if ((byte1 & i) == 0) {
        byteString.append(0);
    } else {
        byteString.append(1);
    }
}
System.out.println(byteString);

Byte.parseByte(s, radix)呢?

System.out.println(Byte.parseByte("10000", 2)); // prints 16

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM