Как я могу преобразовать целое число из десятичного в двоичное? - PullRequest
0 голосов
/ 15 декабря 2010

Как я могу преобразовать целое число из десятичного в двоичное. Например:

int x=10; // radix 10

Как сделать, чтобы другое целое число имело двоичное представление x, например:

int y=1010; // radix 2

используя только c?

Ответы [ 8 ]

4 голосов
/ 15 декабря 2010

Целое число всегда хранится внутри в двоичном формате - говорить, что вы хотите преобразовать int x = 10 base 10 в int y = 1010 base 2, не имеет смысла.Возможно, вы захотите преобразовать его в строку, представляющую двоичный формат целого числа, и в этом случае вы можете использовать Integer.toBinaryString.

3 голосов
/ 15 декабря 2010

Первое, что вы должны понять, это то, что значение является абстрактным понятием, которое не ограничено никаким представлением.Например, если у вас есть 20 яблок, количество яблок будет одинаковым независимо от представительства.Итак, dec("10") == bin("1010").
Значение int относится к этому абстрактному понятию значения, и у него нет никакой формы, пока вы не сможете его напечатать.Это означает, что понятие base важно только для преобразований из строки в int и обратно.

2 голосов
/ 15 декабря 2010
1 голос
/ 15 декабря 2010

Будь то двоичное или десятичное, на самом деле не имеет ничего общего с самим целым числом. Двоичное или десятичное является свойством физического представления целого числа, то есть строки. Таким образом, методы, на которые вы должны обратить внимание: Integer.toString() и Integer.valueOf() (версии, которые принимают параметр radix).

Кстати, внутри все целые числа Java являются двоичными, но литералы в исходном коде являются десятичными (или восьмеричными).

1 голос
/ 15 декабря 2010

Ваш вопрос немного неясен, но я сделаю все возможное, чтобы разобраться в этом.

Как сделать, чтобы другое целое число имело двоичное представление x, например: int y=1010 radix 2?

Отсюда выглядит, что вы хотите написать двоичный литерал в вашем исходном коде.Java не поддерживает двоичные целочисленные литералы.Он поддерживает только десятичные, шестнадцатеричные и восьмеричные числа.

Вместо этого вы можете написать свой номер в виде строки и использовать Integer.parseInt с нужным основанием:

int y = Integer.parseInt("1010", 2);

НоВы должны отметить, что окончательный результат идентичен написанию int y = 10;.Целое число 10, которое было записано как десятичный литерал в исходном коде, во всех отношениях идентично тому, которое было проанализировано из двоичной строки «1010».Нет разницы в их внутреннем представлении, если они оба хранятся как int.


Если вы хотите преобразовать существующее целое число в его двоичное представление в виде строки, вы можете использовать Integer.toBinaryString какдругие уже указали.

0 голосов
/ 15 декабря 2010

Преобразование целого числа в другое основание (строковое представление):

int num = 15;
String fifteen = Integer.toString(num, 2);
// fifteen = "1111"

Преобразование строки обратно в целое число

String fifteen = "1111";
int num = Integer.valueOf(fifteen, 2);
// num = 15

Это охватывает общий случай для любого основания.Невозможно явно назначить целое число как двоичное (только десятичное, восьмеричное и шестнадцатеричное)

int x = 255; // decimal
int y = 0377; // octal (leading zero)
int z = 0xFF; // hex (prepend 0x)
0 голосов
/ 15 декабря 2010

Использовать Integer.toBinaryString ()

String y = Integer.toBinaryString(10);
0 голосов
/ 15 декабря 2010

Оба целых числа будут иметь одинаковое внутреннее представление, однако вы можете отобразить их в двоичном виде через Integer.toBinaryString (i)

...