Десятичное / шестнадцатеричное / двоичное преобразование - PullRequest
1 голос
/ 19 февраля 2012

Сейчас я готовлюсь к экзамену AP Computer Science и мне нужна помощь в понимании того, как вручную преобразовать десятичное, шестнадцатеричное и двоичное значения.Книга, которую я использую (книга Бэррона), содержит пример, но не очень хорошо объясняет его.

Какие формулы следует использовать для преобразования между этими типами чисел?

Ответы [ 2 ]

2 голосов
/ 19 февраля 2012

Вы счастливы, что понимаете основы чисел?Если нет, то вам нужно будет прочитать об этом, или вы просто будете слепо следовать некоторым правилам.

Множество книг потратили бы на это целую главу или больше ...

Двоичный - это основание 2, десятичный - это основание 10, шестнадцатеричный - это основание 16.

Итак, двоичныйиспользует цифры 0 и 1, десятичное число использует 0-9, шестнадцатеричное использует 0-9, а затем мы заканчиваем, поэтому мы также используем AF.

Таким образом, положение десятичной цифры указывает единицы, десятки, сотни, тысячи... это "степени 10"

Положение двоичной цифры указывает единицы, 2 с, 4 с, 8 с, 16 с, 32 с ... Сила 2

Позицияшестнадцатеричные цифры обозначают единицы, 16 с, 256 с ... степени 16

Для от двоичного к десятичному , сложите каждый 1, умноженный на его «мощность», поэтому, работая справаслева:

1001 binary = 1*1 + 0*2 + 0*4 + 1*8 = 9 decimal

Для двоичного в шестнадцатеричный вы можете либо вычислить общее число в десятичном виде, а затем преобразовать в шестнадцатеричное, либо вы можете преобразовать каждую 4-битную последовательность водна шестнадцатеричная цифра:

1101 binary = 13 decimal = D hex

1111 0001 binary = F1 hex

Для от шестнадцатеричного до двоичного , переверните предыдущий пример - это не так уж плоходелать в своей голове, потому что вам просто нужно выяснить, какие из 8,4,2,1 вам нужно сложить, чтобы получить желаемое значение.

Для десятичное в двоичное , это большепроблемы с длинным делением - найдите наибольшую степень 2, меньшую, чем ваш вход, установите соответствующий двоичный бит равным 1 и вычтите эту степень 2 из исходного десятичного числа.Повторяйте до тех пор, пока у вас не останется ноль.

Например, для 87:

  • наивысшая степень двух - 1,2,4,8,16,32, 64 !
  • 64 равно 2 ^ 6, поэтому мы устанавливаем соответствующий бит равным 1 в нашем результате: 1000000
  • 87 - 64 = 23
  • следующая наибольшая степень 2меньше 23 равно 16, поэтому установите бит: 1010000
  • повторите для 4,2,1
  • окончательный результат 1010111 двоичный
  • т.е. 64 + 16 + 4 + 2 +1 = 87 в десятичном виде

Для от шестнадцатеричного до десятичного , это как двоичное в десятичное, только вы умножаете на 1,16,256 ... вместо 1,2,4,8...

Для от десятичного до шестнадцатеричного это похоже на десятичное на двоичное, только вы ищете степени 16, а не 2. Это сложнее всего сделать вручную.

0 голосов
/ 19 февраля 2012

Это очень фундаментальный вопрос, подробный ответ которого на начальном уровне вполне может составить пару страниц. Попробуйте Google это : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...