Культурный офтопик
 help / color / mirror / Atom feed
From: Andrew Borodin <borodin@zarya-k.ru>
To: "культурный офтопик" <smoke-room@lists.altlinux.org>
Subject: Re: [room] Щодо: Двоичные числа
Date: Fri, 9 Feb 2007 09:47:13 +0300
Message-ID: <20070209064713.GB3781@borodin.zarya> (raw)
In-Reply-To: <679044850702080905p1940c957n5110897229c0ae77@mail.gmail.com>

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.

-- 

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


  reply	other threads:[~2007-02-09  6:47 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-08 15:52 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 [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070209064713.GB3781@borodin.zarya \
    --to=borodin@zarya-k.ru \
    --cc=smoke-room@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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

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