как перевести int в двоичный код java
Вывести целое число в двоичном формате на Java
У меня есть номер, и я хочу напечатать его в двоичном виде. Я не хочу делать это, написав алгоритм. Есть ли встроенная функция для этого в Java?
Предполагая, что вы имеете в виду «встроенный»:
( Long имеет аналогичный метод, BigInteger имеет метод экземпляра, где вы можете указать основание.)
Мне нужно было что-то, чтобы красиво распечатать вещи и разделить биты каждый n-бит. Другими словами, отобразить начальные нули и показать что-то вроде этого:
Итак, вот что я написал:
проверить эту логику можно преобразовать число в любую базу
Это самый простой способ печати внутреннего двоичного представления целого числа. Например : если мы возьмем n как 17, то результат будет: 0000 0000 0000 0000 0000 0001 0001
Просто попробуйте. Если область видимости печатает только двоичные значения заданного целочисленного значения. Это может быть положительным или отрицательным.
вход
Вывод
Решение с использованием 32-битной маски дисплея,
Простое и довольно простое решение.
Здесь уже есть хорошие ответы на этот вопрос. Но я попробовал именно так (и, может быть, это самая простая логика на основе → по модулю / делить / добавить ):
Вопрос сложен в Java (и, вероятно, также на другом языке).
Целое число представляет собой 32-битный подписанный тип данных, но Integer.toBinaryString () возвращает строковое представление целочисленного аргумента как беззнаковое целое число в базе 2.
Таким образом, Integer.parseInt (Integer.toBinaryString (X), 2) может генерировать исключение (со знаком или без знака).
Я думаю, что это самый простой алгоритм (для тех, кто не хочет использовать встроенные функции):
Как это работает: цикл while перемещает число вправо (заменяя последний бит на второй-последний и т. Д.), Получает значение последнего бита и помещает его в StringBuilder, повторяет до тех пор, пока не останется ни одного бита (вот когда а = 0).
Преобразование десятичной в двоичную Java
Я пытаюсь преобразовать десятичные в двоичные числа из ввода пользователя с помощью Java.
Как преобразовать Decimal в Binary в Java?
26 ответов
код binaryForm метод попадает в бесконечную рекурсию, вам нужно вернуться, если number :
Integer.toBinaryString() является встроенным методом и будет делать довольно хорошо.
где N = десятичное число.
Я просто хочу добавить, для тех, кто использует:
чтобы получить строку двоичных чисел и хочет преобразовать эту строку в int. Если вы используете
вы получите ошибку NumberFormatException.
что я сделал, чтобы преобразовать строку x в целые числа, сначала был преобразован каждый отдельный символ в строке x в один символ в цикле for.
затем я преобразовал каждый символ обратно в отдельную строку,
затем проанализировал каждую строку в целое число.
Id рисунок Id опубликовать это, потому что я взял меня некоторое время, чтобы выяснить, как получить двоичный файл, такой как 01010101 в целочисленной форме.
Если вы хотите отменить вычисленную двоичную форму, вы можете использовать класс StringBuffer и просто использовать метод reverse (). Вот пример программы, которая объяснит ее использование и вычислит двоичный
двоичный открытый класс <
общественный класс Main <
двоичный в десятичный без использования Integer.ParseInt():
выход:
введите двоичное число:
двоичный в десятичный с использованием Integer.parseInt():
выход:
введите двоичное число:
довольно простой не эффективным!—2—>программа, но он делает свою работу.
следующее преобразует decimal в Binary со сложностью времени : o (n) линейное время и без какой-либо встроенной функции java
В C#, но это то же самое, что и в Java :
должен быть какой-то полезный метод, чтобы сделать это напрямую, я не могу вспомнить.
Я просто решил это сам, и я хотел поделиться своим ответом, потому что он включает двоичный разворот, а затем преобразование в десятичный. Я не очень опытный кодер, но, надеюсь, это будет полезно кому-то еще.
что я сделал, это толкнул двоичные данные в стек, когда я преобразовывал его, а затем выскочил, чтобы обратить его и преобразовать обратно в десятичный.
user12vv
Java из двоичной системы в десятичную и обратно
16 Четверг Янв 2014
Java из двоичной системы в десятичную и обратно
Раньше, чтобы переводить числа из одной системы счисления в другую я писал методы с циклами и т.п.
Нужно делать так:
Вывод на консоль:
11101000
232
Также есть перевод в восьмиричную систему ( метод toOctalString) и шестнадцатиричную ( метод toHexString)
Share this:
Понравилось это:
Похожее
7 thoughts on “Java из двоичной системы в десятичную и обратно”
Duke Nukem said:
можно запулить одномерный динамичексий массив строковых двоичных типа: String massive[] = new <«0000», «0001» и т.д. ток динамическим боком >значений и из него доставать так же как ты щас замутил через принт, ток массив(переменная со значением).
Duke Nukem said:
хотя чет я о своем, заработался. у тебя эффективнее с методом класса=)))
Кстати, классно что есть методы toOctalString — перевод в восьмиричную систему и toHexString (шетнадцатиричная) работа с которыми абсолютна аналогична.
Преобразование int в двоичное строковое представление в Java?
Каким будет лучший способ (в идеале, самый простой) преобразовать int в двоичное строковое представление в Java?
Например, скажем, int is 156. Бинарное строковое представление этого будет “10011100”.
Существует также метод java.lang.Integer.toString(int i, int base), который был бы более уместным, если бы ваш код может в один прекрасный день обрабатывать базы, отличные от 2 (двоичные).
Это то, что я написал несколько минут назад, просто возился. Надеюсь, это поможет!
Преобразование целочисленного в двоичный:
Вывод:
Двоичный номер: 1010
Использование встроенной функции:
Если вы не хотите использовать встроенную функцию для преобразования int в двоичный файл, вы также можете сделать это:
Использование встроенной функции:
Если вы не хотите использовать встроенную функцию для преобразования int в двоичный файл, вы также можете сделать это:
вот мои методы, он немного убеждает, что количество байт зафиксировано
Самый простой способ – проверить, не является ли число нечетным. Если это, по определению, его правое двоичное число будет “1” (2 ^ 0). После того, как мы это определим, мы смещаем число вправо и проверяем одно и то же значение с помощью рекурсии.
Это может быть выражено в псевдокоде как:
Это должно быть довольно просто с чем-то вроде этого:
Еще одна возможная реализация:
Вы также можете использовать цикл while, чтобы преобразовать int в двоичный. Как это,
Java и числа. От простого к сложному
Наш постоянный читатель Кирилл Сергеев делится с нами особенностями хранения чисел в памяти компьютера, используя примеры из Java. В первой части статьи он ярко и сочно рассказывает, как числа влияли на человечество на заре веков, а во второй объясняет, в каких форматах память компьютера хранит разные виды чисел, о числах с плавающей точкой в java и о многом другом интересном. Желаем приятного чтения!
Числа сквозь века: мифы, легенды, развитие
Сначала числа использовались исключительно для определения количества тех или иных однотипных предметов. Это были натуральные числа – как и предметы, счет которым с их помощью вели. Три шкуры, пять наконечников для стрел, два топора. Один, два, три, …, 15 членов общины, а дальше – «нас тьмы, и тьмы, и тьмы. Попробуйте, сразитесь с нами!».
Для нужд первобытного человека таких чисел хватало вполне. Но прогресс не удержать. Люди научились обменивать «что-нибудь ненужное» на предметы, необходимые в быту. А когда зародилась примитивная торговля, тут же появились профессиональные менялы и ростовщики. Чтобы начать охотиться, человек сначала должен где-то получить топор, копье или гарпун. Старшие товарищи уже обладают этими предметами. Так почему не одолжить у них орудие труда в счет будущей добычи или улова? Люди научились давать и брать в долг. Но если вы должны кому-то три беличьи шкурки, а у вас нет ни одной – получается, у вас минус три беличьи шкурки. Сначала не было топора, не было и шкурок. То есть – «все по нулям». Теперь – один топор и минус три охотничьих трофея. Люди научились считать количество целых неделимых предметов: как положительное, так и отрицательное. Так появились целые числа.
Человек развивался, менялись язык и представление о числах. Школ и гимназий еще не было – опыт поколений передавался из уст в уста. В том числе и с помощью сказок. Давайте вспомним и мы одну. Про лису и медведя.
Хитрая лиса поселилась у медведя и тайком по вечерам «хавала его ништяки» – опорожняла кадку с медом. Медведю она говорила, что уходит то на родины, то на крестины. А сама забиралась на чердак и лакомилась медком. В первый вечер она съела четверть кадушки и вернулась в дом. Медведь поинтересовался, как ребенка назвали. Лиса и говорит: «Верхушечкой». Во второй вечер лиса слямзила еще четверть кадки, осталась половина. Лиса вернулась в дом и на вопрос медведя ответила, что ребенка назвали Середочкой. В третий вечер лиса разъелась до того, что навернула всю оставшуюся половину меда. Медведю с гордостью сообщила, что ребенка окрестили Поскребушком. И то правда, мало ли чудных имен на свете?
Сказка – ложь, да в ней намек… Лиса не просто объедала медведя. Делала она это «дискретно», в три подхода, каждый раз съедая часть целого. Сначала она осилила четверть кадки, после этого осталось три четверти. Во второй раз лиса вновь съела четверть. Кадушка стала наполовину пустой. А может быть, наполовину полной. Как бы то ни было, осталась половина. В третий раз лиса до того распробовала медок, что съела всю оставшуюся половину разом. В результате лисьей «рационализации» целая кадка натурального меда превратилась в ноль. Люди тем временем освоили рациональные дроби.
Человек рос. Росли города. Развивались цивилизации: шумерская, египетская, древнегреческая. И такие там жили люди, что хлебом их не корми, а дай построить зиккурат, пирамиду или храм Артемиды. Касательно храма Артемиды – если не построить, то уж хотя бы сжечь.
Для создания всего этого великолепия древние строители пользовались «золотым сечением», извлекали квадратные корни, выводили на все лады число Пи. Почти всякий раз они сталкивались с бесконечными непериодическими десятичными дробями. Они казались им настолько чудными и отличными от рациональных дробей, что они их так и назвали – иррациональные числа. Правда, дальше этого древние геометры не пошли.
Только в Новое и Новейшее время появляется строгая теория вещественных чисел. Множество вещественных чисел, кроме рациональных, включает множество иррациональных чисел.
Сегодня человек при операциях с числами использует не единичную систему счисления, пальцы на руках и ногах, набор косточек или камушков, не устный счет, не абак, не хитроумные механические счетные машины. Компьютер теперь – не роскошь, а средство вычисления. Предлагаю рассмотреть, как хранятся числа в памяти компьютера. Особый упор сделаем на рассмотрение формата хранения вещественных чисел. Посмотрим, как это делается, и разберем примеры на современном, ультрановомодном и востребованном языке программирования высокого уровня – Java.
Как хранятся числа в памяти компьютера
Формат представления целых чисел в Java
С целыми положительными числами все предельно просто. Выделяется n-бит на число. Число в java переводится в двоичную систему счисления. Затем записывается последовательно с нулевого бита по n-1 бит. Старшие не значащие разряды обнуляются.
Рассмотрим пример. Пусть есть целое число 389. Как определить, в каком формате хранится это число?
Переведем число 38910 в двоичную систему счисления.
Так как тип целочисленный, под его хранение отводится четыре байта или 32 бита. Таким образом, ответ может быть записан так:
Для проверки результата выполним небольшой код с выводом чисел на Java:
Результат вычислений совпал с результатом работы программы.
Формат хранения целых отрицательных чисел в java уже интересней. Отрицательное целое число представлено в дополнительном коде. Для перевода числа в дополнительный код нужно перевести его в двоичную систему счисления. Результат перевода представить в обратном коде. Для этого нужно поразрядно заменить все «0» на «1», а «1» на «0». К полученному результату нужно прибавить «1».
Переведем число 38610 в двоичную систему счисления.
Представим результат перевода в обратном коде.
Обр. код: 11111111111111111111111001111101
Представим результат в дополнительном коде.
Доп. код: 11111111111111111111111001111101 + 1 =
Так как тип целочисленный, под его хранение отводится четыре байта или 32 бита. Таким образом, ответ может быть записан в следующем виде:
Для проверки результата выполним небольшой код на Java:
Результат вычислений совпал с результатом работы программы.
Формат представления вещественных чисел
Вещественные числа хранятся в формате чисел в java с плавающей точкой, в которой число представлено в виде мантиссы и степени базы старшего разряда. Например, 75.3810 может быть записано в следующих видах:
В общем виде число с плавающей запятой состоит из знака мантиссы, знака порядка, порядка и мантиссы. Знак мантиссы определяет, больше нуля или меньше. Знак порядка показывает, в каком направлении смещается точка, а порядок определяет, на сколько знаков смещается точка. Наконец, мантисса представляет само число.
S – знак числа (мантиссы);
B – основание системы счисления, у нас 10;
Приведенный пример демонстрирует, как точка перемещается вдоль цифр числа. Точка мечется, как стрелка осциллографа. Очевидно, что таких представлений может быть столько, на сколько хватит фантазии.
Такое положение дел никак не может устроить программистов и инженеров, разрабатывающих электронно-вычислительную аппаратуру и программы для нее. Представление чисел с плавающей точкой в java должно быть унифицировано и стандартизировано. Таким стандартом является IEEE 754. Этот стандарт предусматривает, что число всегда хранится в нормализованной форме. Для чисел, представленных в двоичном коде, это означает, что точка будет сдвигаться влево или вправо до тех пор, пока в старшем бите мантиссы не окажется «1». При этом «1» в мантиссу не записывается. Она становится «неявной». Делается это для экономии одного разряда. Аппаратные средства устроены так, что они сами «помнят» о ее существовании и действуют с мантиссой так, как будто она там есть. То есть, мантисса будет иметь вид 1.M.
Представим число 75.3810 в формате представления числа с плавающей точкой двойной точности. В Java это тип double. Построим это представление, исходя из определений и стандарта IEEE 754. В общем виде формат представления будет таким:
Под все число отводится 64 бита. Под знак – 1 бит. Под порядок – 11 бит. Под мантиссу – 52 бита.
Сначала переведем число 75.3810 в двоичную систему счисления. Перевод целой и дробной части осуществляется по-разному. Целая часть получается путем деления ее на 2 и записи остатков от деления в порядке, обратном их возникновению. Дробная часть получается путем ее умножения на 2 и записи целых частей в порядке их возникновения.
Теперь нужно сдвинуть целую часть вправо так, чтобы в целой части осталась одна единица. Эта единица неявная. Она не будет записана в мантиссу числа.
точка сдвинулась на шесть разрядов влево.
Представление мантиссы получили. Дело за малым – получить представление порядка. Помним, что порядок хранится в коде со сдвигом 1023. Поэтому, если мы сдвигали точку влево на шесть разрядов, мы должны вычислить выражение
и перевести результат в двоичную систему счисления.
Со знаком все просто. Число у нас положительное, поэтому
Теперь воспроизведем полученный результат программно. Для этого выполним следующий код:
Результат вычислений совпал с результатом работы программы.
Рассмотрим пример. Для закрепления представим число Пи в форме представления чисел с плавающей точкой.
Переведем Пи из десятичной системы счисления в двоичную.
Число положительное – значит, знак равен 0.
Определяем мантиссу. В старшем разряде должна остаться одна 1. Поэтому нужно сдвинуть точку на один разряд влево.
Теперь определим порядок. Точка была смещена на один разряд влево. Получаем
Q = 1 + 1023 = 102410 = 100000000002
Воспроизведем полученный результат программно. Для этого выполним следующий код:
Результат вычислений совпал с результатом работы программы.
Вместо выводов и заключения
Запустим на выполнение небольшой код и посмотрим на результат.
Что стало с точностью? Откуда эти нули? Ее вытеснила целая часть. Перемещаясь вправо, целая часть вытеснила из мантиссы младшие разряды. Ведь всего под нее предоставлено 52 бита. Поэтому младшие разряды просто вытолкнуло за правую границу мантиссы. Точность оказалась за нулевым разрядом. Таким образом, очевидно, что представление вещественных чисел в формате чисел с плавающей точкой – это компромисс между точностью и диапазоном представляемых значений.
Наш постоянный читатель Кирилл Сергеев делится с нами особенностями хранения чисел в памяти компьютера, используя примеры из Java. В первой части статьи он ярко и сочно рассказывает, как числа влияли на человечество на заре веков, а во второй объясняет, в каких форматах память компьютера хранит разные виды чисел, о числах с плавающей точкой в java и о многом другом интересном. Желаем приятного чтения!
Числа сквозь века: мифы, легенды, развитие
Сначала числа использовались исключительно для определения количества тех или иных однотипных предметов. Это были натуральные числа – как и предметы, счет которым с их помощью вели. Три шкуры, пять наконечников для стрел, два топора. Один, два, три, …, 15 членов общины, а дальше – «нас тьмы, и тьмы, и тьмы. Попробуйте, сразитесь с нами!».
Для нужд первобытного человека таких чисел хватало вполне. Но прогресс не удержать. Люди научились обменивать «что-нибудь ненужное» на предметы, необходимые в быту. А когда зародилась примитивная торговля, тут же появились профессиональные менялы и ростовщики. Чтобы начать охотиться, человек сначала должен где-то получить топор, копье или гарпун. Старшие товарищи уже обладают этими предметами. Так почему не одолжить у них орудие труда в счет будущей добычи или улова? Люди научились давать и брать в долг. Но если вы должны кому-то три беличьи шкурки, а у вас нет ни одной – получается, у вас минус три беличьи шкурки. Сначала не было топора, не было и шкурок. То есть – «все по нулям». Теперь – один топор и минус три охотничьих трофея. Люди научились считать количество целых неделимых предметов: как положительное, так и отрицательное. Так появились целые числа.
Человек развивался, менялись язык и представление о числах. Школ и гимназий еще не было – опыт поколений передавался из уст в уста. В том числе и с помощью сказок. Давайте вспомним и мы одну. Про лису и медведя.
Хитрая лиса поселилась у медведя и тайком по вечерам «хавала его ништяки» – опорожняла кадку с медом. Медведю она говорила, что уходит то на родины, то на крестины. А сама забиралась на чердак и лакомилась медком. В первый вечер она съела четверть кадушки и вернулась в дом. Медведь поинтересовался, как ребенка назвали. Лиса и говорит: «Верхушечкой». Во второй вечер лиса слямзила еще четверть кадки, осталась половина. Лиса вернулась в дом и на вопрос медведя ответила, что ребенка назвали Середочкой. В третий вечер лиса разъелась до того, что навернула всю оставшуюся половину меда. Медведю с гордостью сообщила, что ребенка окрестили Поскребушком. И то правда, мало ли чудных имен на свете?
Сказка – ложь, да в ней намек… Лиса не просто объедала медведя. Делала она это «дискретно», в три подхода, каждый раз съедая часть целого. Сначала она осилила четверть кадки, после этого осталось три четверти. Во второй раз лиса вновь съела четверть. Кадушка стала наполовину пустой. А может быть, наполовину полной. Как бы то ни было, осталась половина. В третий раз лиса до того распробовала медок, что съела всю оставшуюся половину разом. В результате лисьей «рационализации» целая кадка натурального меда превратилась в ноль. Люди тем временем освоили рациональные дроби.
Человек рос. Росли города. Развивались цивилизации: шумерская, египетская, древнегреческая. И такие там жили люди, что хлебом их не корми, а дай построить зиккурат, пирамиду или храм Артемиды. Касательно храма Артемиды – если не построить, то уж хотя бы сжечь.
Для создания всего этого великолепия древние строители пользовались «золотым сечением», извлекали квадратные корни, выводили на все лады число Пи. Почти всякий раз они сталкивались с бесконечными непериодическими десятичными дробями. Они казались им настолько чудными и отличными от рациональных дробей, что они их так и назвали – иррациональные числа. Правда, дальше этого древние геометры не пошли.
Только в Новое и Новейшее время появляется строгая теория вещественных чисел. Множество вещественных чисел, кроме рациональных, включает множество иррациональных чисел.
Сегодня человек при операциях с числами использует не единичную систему счисления, пальцы на руках и ногах, набор косточек или камушков, не устный счет, не абак, не хитроумные механические счетные машины. Компьютер теперь – не роскошь, а средство вычисления. Предлагаю рассмотреть, как хранятся числа в памяти компьютера. Особый упор сделаем на рассмотрение формата хранения вещественных чисел. Посмотрим, как это делается, и разберем примеры на современном, ультрановомодном и востребованном языке программирования высокого уровня – Java.
Как хранятся числа в памяти компьютера
Формат представления целых чисел в Java
С целыми положительными числами все предельно просто. Выделяется n-бит на число. Число в java переводится в двоичную систему счисления. Затем записывается последовательно с нулевого бита по n-1 бит. Старшие не значащие разряды обнуляются.
Рассмотрим пример. Пусть есть целое число 389. Как определить, в каком формате хранится это число?
Переведем число 38910 в двоичную систему счисления.
Так как тип целочисленный, под его хранение отводится четыре байта или 32 бита. Таким образом, ответ может быть записан так:
Для проверки результата выполним небольшой код с выводом чисел на Java:
Результат вычислений совпал с результатом работы программы.
Формат хранения целых отрицательных чисел в java уже интересней. Отрицательное целое число представлено в дополнительном коде. Для перевода числа в дополнительный код нужно перевести его в двоичную систему счисления. Результат перевода представить в обратном коде. Для этого нужно поразрядно заменить все «0» на «1», а «1» на «0». К полученному результату нужно прибавить «1».
Переведем число 38610 в двоичную систему счисления.
Представим результат перевода в обратном коде.
Обр. код: 11111111111111111111111001111101
Представим результат в дополнительном коде.
Доп. код: 11111111111111111111111001111101 + 1 =
Так как тип целочисленный, под его хранение отводится четыре байта или 32 бита. Таким образом, ответ может быть записан в следующем виде:
Для проверки результата выполним небольшой код на Java:
Результат вычислений совпал с результатом работы программы.
Формат представления вещественных чисел
Вещественные числа хранятся в формате чисел в java с плавающей точкой, в которой число представлено в виде мантиссы и степени базы старшего разряда. Например, 75.3810 может быть записано в следующих видах:
В общем виде число с плавающей запятой состоит из знака мантиссы, знака порядка, порядка и мантиссы. Знак мантиссы определяет, больше нуля или меньше. Знак порядка показывает, в каком направлении смещается точка, а порядок определяет, на сколько знаков смещается точка. Наконец, мантисса представляет само число.
S – знак числа (мантиссы);
B – основание системы счисления, у нас 10;
Приведенный пример демонстрирует, как точка перемещается вдоль цифр числа. Точка мечется, как стрелка осциллографа. Очевидно, что таких представлений может быть столько, на сколько хватит фантазии.
Такое положение дел никак не может устроить программистов и инженеров, разрабатывающих электронно-вычислительную аппаратуру и программы для нее. Представление чисел с плавающей точкой в java должно быть унифицировано и стандартизировано. Таким стандартом является IEEE 754. Этот стандарт предусматривает, что число всегда хранится в нормализованной форме. Для чисел, представленных в двоичном коде, это означает, что точка будет сдвигаться влево или вправо до тех пор, пока в старшем бите мантиссы не окажется «1». При этом «1» в мантиссу не записывается. Она становится «неявной». Делается это для экономии одного разряда. Аппаратные средства устроены так, что они сами «помнят» о ее существовании и действуют с мантиссой так, как будто она там есть. То есть, мантисса будет иметь вид 1.M.
Представим число 75.3810 в формате представления числа с плавающей точкой двойной точности. В Java это тип double. Построим это представление, исходя из определений и стандарта IEEE 754. В общем виде формат представления будет таким:
Под все число отводится 64 бита. Под знак – 1 бит. Под порядок – 11 бит. Под мантиссу – 52 бита.
Сначала переведем число 75.3810 в двоичную систему счисления. Перевод целой и дробной части осуществляется по-разному. Целая часть получается путем деления ее на 2 и записи остатков от деления в порядке, обратном их возникновению. Дробная часть получается путем ее умножения на 2 и записи целых частей в порядке их возникновения.
Теперь нужно сдвинуть целую часть вправо так, чтобы в целой части осталась одна единица. Эта единица неявная. Она не будет записана в мантиссу числа.
точка сдвинулась на шесть разрядов влево.
Представление мантиссы получили. Дело за малым – получить представление порядка. Помним, что порядок хранится в коде со сдвигом 1023. Поэтому, если мы сдвигали точку влево на шесть разрядов, мы должны вычислить выражение
и перевести результат в двоичную систему счисления.
Со знаком все просто. Число у нас положительное, поэтому