Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод числа с плавающей точкой в 2-ый код 
:(
    Опции темы
SIMarOK
Дата 15.9.2005, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 25.10.2004

Репутация: нет
Всего: нет



Помогите пожалуйста, кто знает, перевести число 27.00141 в дваичный код, желательно расписывать действия, а то калькулятор только ответ выводит smile

Спасибо

Это сообщение отредактировал(а) SIMarOK - 15.9.2005, 18:02
PM MAIL   Вверх
Mayk
Дата 15.9.2005, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 2
Всего: 134



Тебе нужно перевести число в двоичную систуму счисления, или узнать как его(число) хранит в памяти комп?


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
SIMarOK
Дата 15.9.2005, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 25.10.2004

Репутация: нет
Всего: нет



Цитата(Mayk @ 15.9.2005, 18:16)
Тебе нужно перевести число в двоичную систуму счисления, или узнать как его(число) хранит в памяти комп?

И перевести, и как располагается, очень был бы признателенsmile
PM MAIL   Вверх
esperant0
Дата 15.9.2005, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



0.4 переведем в бинарный код.

для этого нужно умножать на два и смотреть на целую часть.

0.4*2=0.8 (целая часть ноль)
0.8*2=1.6 ( целеая часть 1 откинем ее)
0.6*2=1.2( целеая часть 1 откинем ее)
0.2*2=0.4 ( получили уже встречающееся число, значит запись переодическая)

0.4=0.011011011


В записи числа после точки, идут(сверху вниз) получавшиеся целые части.


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
Mayk
Дата 15.9.2005, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 2
Всего: 134



Относительно перевода.
В начале переводишь целую часть, потом складываешь.
Пусть надо перевести 2570.00142

Алгоритм перевода целой части из 10ной в любую, берем ... (СЮРПРИЗ) 10-ную(так легче понять соль)
Делишь на основание системы, то есть 10.
2570/10 = 257 остаток 0. 0 - цифра числа в требуемой системе
257/10 = 25 остаток 7. 7 - цифра числа в требуемой системе
25/10 = 2 остаток 5. 5 - цифра числа в требуемой системе
2/10 = 0 остаток 2. 2 - цифра числа в требуемой сс
0 - хватит делить, все цифры получены

Как видно на каждом шаге мы делим на основание сс, "сдвигая" всё число на один разряд. Чтобы получить число, полученные цифры в остатках следует записать в обратном порядке(то есть 2,5,7,0 - получится 2570)
2570=2570. Тип топ.
Если хочешь получить число в двоичной, то поступаешь так же, но вместо 10ки делишь на два.

Алгоритм перевода дробной части из 10ной в любую, берем ... (БАЯН) 10-ную.
Итак, узнаеи цифры в числе .00142.
Если раньше последовательно делили, то теперь последовательно умножаем на основание СС, выдвигая таким образом нужную нам цифру.
.00141 * 10 = 0.0142 0 - цифра числа в требуемой системе
.0141 * 10 = 0.142. 0 - цифира числа в требуемой системе
.141 * 10 = 1.42. 1 - цифра числа в требуемой системе
.41 * 10 = 4.2. 4 - цифра числа в требуемой системе
.2*10 = 2.0, 2 - цифра числа.
Как видно в данном случае найденный цифры числа идут сверху вниз.
.00142 = .00142. Верно.

Переведем по подобному алгоритму 33.25.

33 / 2 = 16 остаток 1
16 / 2 = 8 остаток 0
8 / 2 = 4 остаток 0
4 / 2 = 2 остаток 0
2 / 2 = 1 остаток 0
1 / 2 = 0 остаток 1
сл-но 33 - это 100001 в двоичной(что есть правда)

или то же самое в двоичной системе

100001 / 10 = 10000 остаток 1
10000 / 10 = 1000 остаток 0
1000 / 10 = 100 остаток 0
100 / 10 = 10 остаток 0
10 / 10 = 1 остаток 0
1 / 10 = 0 остаток 1


То есть благодаря делению в остаток заносится 1 цифра исходного числа.

Переводим 0.25
0.25 * 2 = 0.5
0.5 * 2 = 1.0
Таким образом в двоичной сс 0.25 выглядит как 0.01.

Переведём двоичное 0.01 в двоичное:
0.01 * 10 = 0.1
0.1 * 10 = 1.0
Как видно при умножении на 2 в целые числа попадает цифра исходного числа.

Переводы из Nной СС(системы счисления) в Nную СС хорошо покаывают как данный алгоритм получает цифры исходного числа).

Кстати не все дробные числа нормально переводятся между сс. Так например при переводе одной десятой в двоичную получится бесконечная дробь
(как и при переводе из 0.1 в троичной в десятичную (3 в степени -1 - это бесконечная дробь))


-----------------------------------------

Про хранения флоатов в памяти советую почитать например тут.

Если в кратце, то в памяти хранятся все двоичные цифры числа, кроме первой(которая равна единице), позиция запятой и знак.




--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0405 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.