#1 2011.04.05 23:05

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 805
Карма: 11
Профиль Веб-сайт

Перевод десятичной дроби в двоичную систему счисления

На висах спрашивал, что-то ответа не получил! а еще некоторые себя программистами считают))
Гемор, думаю ты должен это знатьsmile Собственно сабж:
Нужно перевести десятичную дробь например(0,65), в двоичную систему счисления!
На примере дроби 0,75 все выходит просто:
0,75 *2 = 1,50 * 2 = 3,00 в итоге получаем 0,11 - получили единицу, и на этом останавливаемся!
а в примере 0,65 уже сложнее... тут мы получаем бесконечный цикл, который может продолжаться бесконечно!
Как понять что мы получили необходимую точность вычислений?
Добавлено спустя   9 минут  14 секунд:
т.е получается 0,65*2 = 1,30 * 2 = 0,60 * 2 = 1,22 * 2 = 0,44 * 2 = 0,88 и тут начинается цикл! т.е
1,76 -> 1,52 -> 1,04 -> 0,08 -> 0,16 -> 0,32 -> 0,64 -> 1,28 -> 0,46 -> 0,72 -> 1,44 и опять получается 0,88


Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#2 2011.04.06 00:28

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 805
Карма: 11
Профиль Веб-сайт

Re: Перевод десятичной дроби в двоичную систему счисления

и еще из десятичной в двоичную что - то не получается!
101101 = 1*2^0 + 0*2^1 + 1*2^2 + 1*2^3 + 0*2^4 + 1*2^5 = 0 + 2 + 4 + 8 + 32 = 46
проверяем
46/2 = 23 -> 46 - 46 = 0
23/2 = 11 -> 23 - 22 = 1
11/2 = 5 -> 11 - 10 = 1
5/2 = 2 -> 5 - 4 = 1
2/2 = 1 -> 2 - 2 = 0
1
и получается 101110 совсем другое число! и как так получилось что на 1 больше?


Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#3 2011.04.06 01:08

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 805
Карма: 11
Профиль Веб-сайт

Re: Перевод десятичной дроби в двоичную систему счисления

Nu3oN написал:

и еще из десятичной в двоичную что - то не получается!
101101 = 1*2^0 + 0*2^1 + 1*2^2 + 1*2^3 + 0*2^4 + 1*2^5 = 0 + 2 + 4 + 8 + 32 = 46
проверяем
46/2 = 23 -> 46 - 46 = 0
23/2 = 11 -> 23 - 22 = 1
11/2 = 5 -> 11 - 10 = 1
5/2 = 2 -> 5 - 4 = 1
2/2 = 1 -> 2 - 2 = 0
1
и получается 101110 совсем другое число! и как так получилось что на 1 больше?

С этим разобрался, мой косяк!
тут идет
101101 = 1*2^0 + 0*2^1 + 1*2^2 + 1*2^3 + 0*2^4 + 1*2^5 = 1 + 0 + 4 + 8 + 32 = 45


Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#4 2011.04.06 10:31

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Перевод десятичной дроби в двоичную систему счисления

echo base_convert('0.65', 10, 2); // 1000001

Неактивен

#5 2011.04.06 17:40

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 805
Карма: 11
Профиль Веб-сайт

Re: Перевод десятичной дроби в двоичную систему счисления

Эмммм... я так ученикам и расскажу!
И про PHP и про base_convert() big_smile


Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#6 2011.04.06 22:10

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 805
Карма: 11
Профиль Веб-сайт

Re: Перевод десятичной дроби в двоичную систему счисления

Плюс ко всему base_convert() не знает дробей)


Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.009 s