Jump to content

перевод числа в двоичное представление и обратно


rus
 Share

Recommended Posts

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

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

есть таблица, но она опять же, только от 1 до 9 по моему...

Link to comment
Share on other sites

Как по мне, то самый такой простой и очевидный метод для перевода целых чисел bin=>dec метод Горнера.


bin{11001}
0*2+1=1
1*2+1=3
3*2+0=6
6*2+0=12
12*2+1=25
dec{25}

А в обратную сторону dec=>bin делением на 2, если есть остаток значит записываем 1 если нет, то 0.


dec{25}
25/2 = 1
12/2 = 0
6/2 = 0
3/2 = 1
1/2 = 1
bin{11001}

  • Like 1
Link to comment
Share on other sites

Нужно всего лишь запомнить 128-64-32-16-8-4-2-1-0 и складывать соответствующие биты. А в обратную сторону аналогично. Если больше 128 (я для одного байта беру пример), то крайний бит будет единичным, потом вычитаем 128, сравниваем с 64 и так далее.

  • Like 1
Link to comment
Share on other sites

Друзья, читайте пост Руса внимательней

Это было прочтено и с первого раза внимательно. Но разве выше указанные методы сложны для удержания в голове?

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

я так понял (с его слов), что ip или маску, или шлюз придется переводить туда и обратно в двоичный вид, по сему, если ip к примеру будет: 192.168.25.68 то представить его в двоичный вид в уме будет сложновато... :unsure:

Нужно всего лишь запомнить 128-64-32-16-8-4-2-1-0 и складывать соответствующие биты. А в обратную сторону аналогично. Если больше 128 (я для одного байта беру пример), то крайний бит будет единичным, потом вычитаем 128, сравниваем с 64 и так далее.

не совсем понял, можно чуток поподробнее?

Link to comment
Share on other sites

не совсем понял, можно чуток поподробнее?

Разберем число 200

|128|64|32|16|8|4|2|1|

Ближайшее число, которое меньше 200, это 128

10000000

200 - 128 = 72

Ближайшее число, которое меньше 72 - 64

11000000

72 - 64 = 8

Восьмерку заполняем

11001000

Все, больше нет остатков. Осталось восстановить до какой-то разрядности число. Обычно разрядность берется 8/16/32/64 (количество позиций, в которых может записываться 0 или 1)

Длина нашей строки равна 8, поэтому делать ничего не нужно, иначе можно добавить нули в начало.

  • Like 1
Link to comment
Share on other sites

Да ну, глупости какие. Берёшь калькулятор и переводишь.

ну иногда полезно поупражняться в уме :)

не совсем понял, можно чуток поподробнее?

Разберем число 200

ну тут число простое..., хотя да, в принципе наверное ничего сложного, но можно и так:

200 = 100·2 + 0

100 = 50·2 + 0

50 = 25·2 + 0

25 = 12·2 + 1

12 = 6·2 + 0

6 = 3·2 + 0

3 = 1·2 + 1

Друзья, всем спасибо за ответы и советы, всем по + :)

Link to comment
Share on other sites

ну тут число простое..., хотя да, в принципе наверное ничего сложного, но можно и так:

200 = 100·2 + 0

100 = 50·2 + 0

50 = 25·2 + 0

25 = 12·2 + 1

12 = 6·2 + 0

6 = 3·2 + 0

3 = 1·2 + 1

:blink:

0001001 - это 9

считают по арабски - с зада на перед ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy