Культурный офтопик
 help / color / mirror / Atom feed
* [room] Щодо: Двоичные числа
@ 2007-02-08 15:52 gns
  2007-02-08 15:57 ` Damir Shayhutdinov
  0 siblings, 1 reply; 11+ messages in thread
From: gns @ 2007-02-08 15:52 UTC (permalink / raw)
  To: gns
  Cc: культурный
	офтопик

кстати запятая по ходу сохраняет место - бишь можно отдельно  целую
часть отконвертить, а потом дробну ю: 0,26712 представить и
отконвертить как целое 26712 , а потом тупо дописать результат после
запятой (потому что значение разрядов сохранится, ибо 1/2 это 64/128)


2007/2/8, gns@altlinux.ru <gns@altlinux.ru>:
> как и десятичная дробь:
>
> 0,abcdefg... = a/2+b/4+c/8+d/16+e/32+f/64+g/128
>
> и алгоритм соответсвенно близко к алгоритму для целых
>
> 2007/2/8, Eugene Ostapets <eostapets@gmail.com>:
> > Попросили знакомым написать рассчетку для ленивого дитяти... А там в
> > задании необходимо среди прочего барахла превратить дробное число из
> > десятичного в двоичное... С точностью не менее 8 знаков в дробной
> > части... Забег по склерозу подсказал что в мои годы мы занимались
> > только целыми числами... Кто-то помнит/знает правила для записи
> > дробного числа в двоичном формате?
> >
> > --
> > С уважением,
> > Евгений Остапец
> > uin: 23747217
> > jid: eugene_ostapets@jabber.ru
> > _______________________________________________
> > smoke-room mailing list
> > smoke-room@lists.altlinux.org
> > https://lists.altlinux.org/mailman/listinfo/smoke-room
>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [room] Щодо: Двоичные числа
  2007-02-08 15:52 [room] Щодо: Двоичные числа gns
@ 2007-02-08 15:57 ` Damir Shayhutdinov
  2007-02-08 16:00   ` gns
  0 siblings, 1 reply; 11+ messages in thread
From: Damir Shayhutdinov @ 2007-02-08 15:57 UTC (permalink / raw)
  To: культурный
	офтопик

> кстати запятая по ходу сохраняет место - бишь можно отдельно  целую
> часть отконвертить, а потом дробну ю: 0,26712 представить и
> отконвертить как целое 26712 , а потом тупо дописать результат после
> запятой (потому что значение разрядов сохранится, ибо 1/2 это 64/128)
Не получится.

0.1b = 0.5d
однако 5 если переводить в двоичный вид будет 101.
0.101b = 0.625d

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [room] Щодо: Двоичные числа
  2007-02-08 15:57 ` Damir Shayhutdinov
@ 2007-02-08 16:00   ` gns
  2007-02-08 16:31     ` Eugene Ostapets
  0 siblings, 1 reply; 11+ messages in thread
From: gns @ 2007-02-08 16:00 UTC (permalink / raw)
  To: культурный
	офтопик

да, я уже обломался :)

2007/2/8, Damir Shayhutdinov <lost404@gmail.com>:
> > кстати запятая по ходу сохраняет место - бишь можно отдельно  целую
> > часть отконвертить, а потом дробну ю: 0,26712 представить и
> > отконвертить как целое 26712 , а потом тупо дописать результат после
> > запятой (потому что значение разрядов сохранится, ибо 1/2 это 64/128)
> Не получится.
>
> 0.1b = 0.5d
> однако 5 если переводить в двоичный вид будет 101.
> 0.101b = 0.625d
> _______________________________________________
> smoke-room mailing list
> smoke-room@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/smoke-room

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [room] Щодо: Двоичные числа
  2007-02-08 16:00   ` gns
@ 2007-02-08 16:31     ` Eugene Ostapets
  2007-02-08 17:01       ` Damir Shayhutdinov
  0 siblings, 1 reply; 11+ messages in thread
From: Eugene Ostapets @ 2007-02-08 16:31 UTC (permalink / raw)
  To: культурный
	офтопик

2007/2/8, gns@altlinux.ru <gns altlinux.ru>:
> да, я уже обломался :)
>
> 2007/2/8, Damir Shayhutdinov <lost404@gmail.com>:
> > > кстати запятая по ходу сохраняет место - бишь можно отдельно  целую
> > > часть отконвертить, а потом дробну ю: 0,26712 представить и
> > > отконвертить как целое 26712 , а потом тупо дописать результат после
> > > запятой (потому что значение разрядов сохранится, ибо 1/2 это 64/128)
> > Не получится.
> >
> > 0.1b = 0.5d
> > однако 5 если переводить в двоичный вид будет 101.
> > 0.101b = 0.625d
так знает кто-то правило? Ибо пользоваться qalculator я тоже умею, но
беглый взгляд в его исходники убедил меня что алгоритм преобразования
я из него не вытащу... :)
-- 
С уважением,
Евгений Остапец
uin: 23747217
jid: eugene_ostapets@jabber.ru

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [room] Щодо: Двоичные числа
  2007-02-08 16:31     ` Eugene Ostapets
@ 2007-02-08 17:01       ` Damir Shayhutdinov
  2007-02-08 17:05         ` Damir Shayhutdinov
  2007-02-08 21:19         ` Aleksey Korotkov
  0 siblings, 2 replies; 11+ messages in thread
From: Damir Shayhutdinov @ 2007-02-08 17:01 UTC (permalink / raw)
  To: культурный
	офтопик

> так знает кто-то правило? Ибо пользоваться qalculator я тоже умею, но
> беглый взгляд в его исходники убедил меня что алгоритм преобразования
> я из него не вытащу... :)
Вот например:

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

0. Остаток = дробной части
1. Если остаток равен 0, прекратить алгоритм
2. Остаток < 0.5 ?
3. Если да, то записать 0, и умножить остаток на  2.
4. Если больше или равен 0.5 - то записать 1, отнять 0.5 и умножить на 2.
5. Перейти к пункту 1.

Например:
0.625 (0, <тут будут цифры дроби>)
0.625 != 0
Оно больше чем 0.5 - по этому надо записать после запятой 1, отнять
0.5 и умножить на 2.
0.625 - 0.5 = 0.125 (0,1<>)
0.125 * 2 = 0.25 (0,1<>)
Теперь опять на пункт 1.
0.25 != 0
0.25 < 0.5 ? да. Поэтому записываем 0, умножаем на 2.
0.25 * 2 = 0.5 (0,10<>)
Переходим опять к пункту 1.
0.5 < 0.5 ? нет. Записываем 1, отнимаем 0.5, умножаем на 2
0.5 - 0.5 = 0 (0,101<>)
0 * 2 = 0 (0,101<>)
Переходим к пункту 1. В остатке получили 0. Алгоритм закончен.
Итого: 0.625 = 0.101

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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [room] Щодо: Двоичные числа
  2007-02-08 17:01       ` Damir Shayhutdinov
@ 2007-02-08 17:05         ` Damir Shayhutdinov
  2007-02-09  6:47           ` Andrew Borodin
  2007-02-08 21:19         ` Aleksey Korotkov
  1 sibling, 1 reply; 11+ messages in thread
From: Damir Shayhutdinov @ 2007-02-08 17:05 UTC (permalink / raw)
  To: культурный
	офтопик

Уточненный алгоритм выглядит так:

> 0. Остаток = дробной части исходного числа
> 1. Если остаток равен 0, прекратить алгоритм
> 2. Остаток < 0.5 ?
> 3. Если да, то записать 0, и умножить остаток на  2.
> 4. Иначе записать 1, отнять 0.5 и умножить на 2.
> 5. Перейти к пункту 1.

Заменил "Если больше или равно 0.5" на "Иначе".

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [room] Щодо: Двоичные числа
  2007-02-08 17:01       ` Damir Shayhutdinov
  2007-02-08 17:05         ` Damir Shayhutdinov
@ 2007-02-08 21:19         ` Aleksey Korotkov
  2007-02-08 21:37           ` Damir Shayhutdinov
  1 sibling, 1 reply; 11+ messages in thread
From: Aleksey Korotkov @ 2007-02-08 21:19 UTC (permalink / raw)
  To: культурный
	офтопик

В Чтв, 08/02/2007 в 20:01 +0300, Damir Shayhutdinov пишет:
> В принципе, для всех дробей, делитель которых не является степенью 2 -результатом 
> будет  периодическая дробь.

:) Какой период, например, у 0.0110111001011101111000...? И что означает
фраза: "делитель которых не является степенью 2"?

P.S. Когда-то давно писал я прогу (на паскале) для перевода чисел из
одной c/c в другую (с основаниями в пределах 2..36) с заданной
точностью. 

P.P.S. Что такое щодо?

-- 
С уважением,
А.В.Коротков,

mailto:ziga@uni.udm.ru




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [room] Щодо: Двоичные числа
  2007-02-08 21:19         ` Aleksey Korotkov
@ 2007-02-08 21:37           ` Damir Shayhutdinov
  2007-02-09  4:12             ` Aleksey Korotkov
  2007-02-09  6:45             ` Nick S. Grechukh
  0 siblings, 2 replies; 11+ messages in thread
From: Damir Shayhutdinov @ 2007-02-08 21:37 UTC (permalink / raw)
  To: ziga,
	культурный
	офтопик

09.02.07, Aleksey Korotkov<ziga.udm.net> написал(а):
> В Чтв, 08/02/2007 в 20:01 +0300, Damir Shayhutdinov пишет:
> > В принципе, для всех дробей, делитель которых не является степенью 2 -результатом
> > будет  периодическая дробь.
>
> :) Какой период, например, у 0.0110111001011101111000...?
Например, 0.0(110111001011101111000)
Под дробью понимается рациональное число.

> И что означает
> фраза: "делитель которых не является степенью 2"?
Дробь, которая не может быть сокращена до того, чтобы в знаменателе
стояла степень двойки.
Например, 25/100 (0.25) может быть сокращено до 1/4 (в знаменателе
степень двойки) - поэтому в двоичном виде она будет представлена
конечной дробью.
А 26/100 не может быть сокращено таким образом - и будет представлено
в двоичном виде бесконечной периодической дробью.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [room] Щодо: Двоичные числа
  2007-02-08 21:37           ` Damir Shayhutdinov
@ 2007-02-09  4:12             ` Aleksey Korotkov
  2007-02-09  6:45             ` Nick S. Grechukh
  1 sibling, 0 replies; 11+ messages in thread
From: Aleksey Korotkov @ 2007-02-09  4:12 UTC (permalink / raw)
  To: Damir Shayhutdinov
  Cc: культурный
	офтопик

В Птн, 09/02/2007 в 00:37 +0300, Damir Shayhutdinov пишет:
> Например, 0.0(110111001011101111000)

Хе-хе. С какой стати? Вы вообще даже не поняли, что я за дробь
написал :)

> Под дробью понимается рациональное число.

Речь шла о вещественных числах.

> > И что означает> фраза: "делитель которых не является степенью 2"?
> Дробь, которая не может быть сокращена до того, чтобы в знаменателестояла 
> степень двойки.

Это очень своеобразные определения :). В математике фразы типа "делитель
которых не является степенью 2" относят к делению целых чисел.

-- 
С уважением,
А.В.Коротков,

mailto:ziga@uni.udm.ru




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [room] Щодо: Двоичные числа
  2007-02-08 21:37           ` Damir Shayhutdinov
  2007-02-09  4:12             ` Aleksey Korotkov
@ 2007-02-09  6:45             ` Nick S. Grechukh
  1 sibling, 0 replies; 11+ messages in thread
From: Nick S. Grechukh @ 2007-02-09  6:45 UTC (permalink / raw)
  To: культурный
	офтопик

не знаю про ту дробь, но вот иррациональное двоичное число:
0,10110111011110111110111111011111110111111110... :) но нам в общем
пофиг, потому что сказано до 8 знаков

PS. щодо - это гугл мейл на несуществующием языке пишет. "по поводу",
"относительно". Re: короче.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [room] Щодо: Двоичные числа
  2007-02-08 17:05         ` Damir Shayhutdinov
@ 2007-02-09  6:47           ` Andrew Borodin
  0 siblings, 0 replies; 11+ messages in thread
From: Andrew Borodin @ 2007-02-09  6:47 UTC (permalink / raw)
  To: культурный
	офтопик

On Thu, Feb 08, 2007 at 08:05:20PM +0300, Damir Shayhutdinov wrote:
> Уточненный алгоритм выглядит так:

> > 0. Остаток = дробной части исходного числа
> > 1. Если остаток равен 0, прекратить алгоритм
> > 2. Остаток < 0.5 ?
> > 3. Если да, то записать 0, и умножить остаток на  2.
> > 4. Иначе записать 1, отнять 0.5 и умножить на 2.
> > 5. Перейти к пункту 1.

> Заменил "Если больше или равно 0.5" на "Иначе".

Если точность задана, то все гораздо проще.

Надо дробную часть умножить на число "2 в степени точность"
(т. е. перенести в двоичном числе запятую на "точность" знаков 
вправо), отбросить у получившегося числа дробную часть (или 
правильно округлить до целого), и перевести получившееся целое 
число в двоичную форму. Затем перенести запятую назад, на 
"точность" знаков влево. Это и будет дробная часть.

Пример: перевести число 3.625 в двоичную форму с точностью 8 
знаков после запятой.

С целой частью как обычно: 3d == 11b.

Дробна часть:
 - умножаем 0.626 на 256 (256 == pow(2, 8)):  0.625 * 256 = 160.0

 - отбрасываем дробную часть и преводим в двоичную форму:
160d == 10100000b.

 - состыковываем: 3.625d == 11.101b.

-- 

С уважением,
А. Бородин.


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2007-02-09  6:47 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-02-08 15:52 [room] Щодо: Двоичные числа gns
2007-02-08 15:57 ` Damir Shayhutdinov
2007-02-08 16:00   ` gns
2007-02-08 16:31     ` Eugene Ostapets
2007-02-08 17:01       ` Damir Shayhutdinov
2007-02-08 17:05         ` Damir Shayhutdinov
2007-02-09  6:47           ` Andrew Borodin
2007-02-08 21:19         ` Aleksey Korotkov
2007-02-08 21:37           ` Damir Shayhutdinov
2007-02-09  4:12             ` Aleksey Korotkov
2007-02-09  6:45             ` Nick S. Grechukh

Культурный офтопик

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/smoke-room/0 smoke-room/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 smoke-room smoke-room/ http://lore.altlinux.org/smoke-room \
		smoke-room@lists.altlinux.org smoke-room@lists.altlinux.ru smoke-room@lists.altlinux.com smoke-room@altlinux.ru smoke-room@altlinux.org smoke-room@altlinux.com
	public-inbox-index smoke-room

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.smoke-room


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git