Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2009, 12:10   #1
Urukhay4
Пользователь
 
Регистрация: 17.04.2009
Сообщений: 11
По умолчанию Двоичная система исчисления: как

Здравствуйте!

Намедни читал книжку "С++ для чайников" (для лузеров не нашел :-), а жаль, но не в это, как говорится, ссуть...) - не смог разобраться в двоичной системе счисления. В частности автор сначала представляет число 123 в десятеричной как 1*10^2+2*10^1+3*10^0, потом в восьмеричной как 123=1*8^2+7*8^1+3*8^0, а потом (как апофеоз этой феерии) - в двоичной - 123=0*128+1*64+1*32+1*16+1*8+0*4+1* 2+1*1, но я никак не могу догнать откуда здесь взялись нули (0*128 и 0*4), если кто-нибудь подскажет, то искренняя моя благодарность будет ему достойной наградой.
Спасибо за внимание!
Urukhay4 вне форума Ответить с цитированием
Старый 30.05.2009, 12:51   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Может быть, в обратную сторону понятнее
Есть число в двоичной системе
1*2^9 + 1*2^8 + 1*2^7 + 1*2^6 + 1*2^5 + 1*2^4 + 1*2^3 +1*2^2 + 1*2^1 + 1*2^0
В десятичной это
1*10^3 + 0*10^2 + 2*10^1 + 3*10^0, то есть 1023. В нём есть ноль.
Somebody вне форума Ответить с цитированием
Старый 30.05.2009, 15:29   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

А меня в школе обучали так переводить из двоичной в десятиричную (надеюсь правильно всё помню, а то давно уже не занимался этим ):
Пусть 1111011 - число в двоичной системе счисления.
Нумеруем эти числа справа на лево, начиная с нуля
Перевод в 10-ую систему из системы с основанием N будет таким:
A = a0*N^0 + a1*N^1 + ... + an*N^n,
где i - это номер цифры, ai - это i-я цифра
У нас двоичная система, а потому N = 2
Итак, число 1111011 = 1*2^0 + 1*2^1 + 0*2^2 + 1*2^3 + 1*2^4 + 1*2^5 + 1*2^6 = 1 + 2 + 0 + 8 + 16 + 32 + 64 = 123
Так же и из 8-ой системы в 10-ричную переводится, только N = 8 будет. Возьмем число 173 в 8-ричной системе и переведем его в 10-ричную систему:
173 = 3*8^0 + 7*8^1 + 1*8^2 = 3+56+64 = 123

Перевод из 10-ой системы в двоичную осуществляется столбиком.
Исходное число делим на 2, остаток от деления запоминаем, а оставшуюся часть опять делим на 2 и так до тех пор, пока не "кончится число. Потом остатки "собираем" в число задом-наперед.
Пример:
123 \2
__61 \ 2
1__30 \ 2
__1__15\2
____0__7\2
_____1__3\2
_______1_1
________1
т.е. 123 / 2 = 61 и остаток 1. 61 / 2 = 30 и остаток 1. 30 / 2 = 15 и остаток 0 и т.д.
В итоге собираем все остатки и получаем: 1111011

Ну и в восьмеричную так же переводим 123:
123 \ 8
___15\8
3____1
____7
123 / 8 = 15 и 3 в остатке. 15 / 8 = 1 и 7 в остатке.
Получаем: 173
pu4koff вне форума Ответить с цитированием
Старый 01.06.2009, 07:18   #4
Urukhay4
Пользователь
 
Регистрация: 17.04.2009
Сообщений: 11
По умолчанию

Искреннее спасибо, буду разбираться.
Urukhay4 вне форума Ответить с цитированием
Старый 01.06.2009, 16:43   #5
Shchigi
 
Регистрация: 01.05.2009
Сообщений: 3
По умолчанию

В десятеричной системе число раскладывается по степеням 10:
12305 = 1 * 10000 + 2 * 1000 + 3 * 100 + 0 * 10 + 5 * 1

В двоичной же число раскладывается по степеням 2. Таким образом Вам нужно представить любое число как сумму степеней 2. Кстати, это делается единственным образом.

Задача: есть число 123 в десятеричной системе счисления. Нужно представить его в двоичной.

На пальцах это выглядит так:

123 < 128 но больше 64 ->
123 = 64 + 59 (= 1 * 2^6 + 59)
59 = 32 + 27 (= 1 * 2^5 + 27)
27 = 16 + 11 (= 1 * 2^4 + 11)
11 = 8 + 3 (= 1 * 2^3 + 3)
3 < 4, поэтому степень 2^2 пропускается (т. е. умножается на 0)
3 = 2 + 1 (= 1 * 2^1 + 1 * 2^0)

Собираем все результаты, получаем решение.

Кстати, pu4koff совершенно точно указал, как делать это в общем случае.
"Народу не нужны нездоровые сенсации. Народу нужны здоровые сенсации".
Shchigi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
двоичная система счисления galaid Паскаль, Turbo Pascal, PascalABC.NET 3 17.05.2009 15:42
Двоичная система в АСМ.. smileman Помощь студентам 3 05.11.2008 13:40
двоичная система terminadoor Помощь студентам 1 21.09.2008 23:00
Экспертная система ...КАК? ИЛ87 Помощь студентам 2 21.12.2007 20:44
16-я система исчисления:вопрос Mustang Общие вопросы Delphi 4 23.09.2007 17:57