Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Binääriluku

0 views
Skip to first unread message

JN

unread,
Dec 17, 1999, 3:00:00 AM12/17/99
to
Miten 10-järjestelmäluku muutetaan binääriluvuksi?

Anu

unread,
Dec 17, 1999, 3:00:00 AM12/17/99
to
Miten 10-järjestelmäluku muutetaan binääriluvuksi?

18-dec to bin

18 jaetaan 2 = 9, menee tasan -jakojäännös 0
9/2=4, jk 1
4/2=2, jk 0
2/2=1, jk 0
1/2=0, jk 1

Vähiten merkitsevä saatiin ensin, joten vastaus 10010

Joel Yliluoma

unread,
Dec 21, 1999, 3:00:00 AM12/21/99
to
On Fri, 17 Dec 1999 19:12:34 +0200, JN wrote:
: Miten 10-järjestelmäluku muutetaan binääriluvuksi?

Olkoon A se 10-järjestelmän positiivinen kokonaisluku,
joka muutetaan binääriluvuksi.

Niin kauan kuin A >= 1, tehdään seuraavaa:
Jos A on parillinen, kirjoitetaan numero 1, muuten numero 0.
Jaetaan A kahdella (hävittäen desimaalit).

Kun A on 0, on nyt tulostettu binääriluvun numerot
takaperin-järjestyksessä. Esimerkki:

A=13

write A&1 -> '1'
A/=2 -> 6
write A&1 -> '0'
A/=2 -> 3
write A&1 -> '1'
A/=2 -> 1
write A&1 -> '1'
A/=2 -> 0

Siis 13d = 1101b.

Jos A oli negatiivinen, niin vaihdat sen positiiviseksi
ennen operaatiota ja lisäät miinusmerkin binääriluvun eteen.
Jos miinusmerkki ei kelpaa, suoritat käyttämäsi järjestelmän
mukaisen negaation, esimerkiksi vähentämällä yhden ja kääntämällä
kaikki bitit nurin (1->0, 0->1).

Jos A:ssa oli desimaaleja (pilkunjäljeinen osa), niin niiden
muuttamien käy sitten näin:
Ekaksi suoritetaan tuo edellinen looppi.
Sitten palautetaan se alkuperäinen A:n arvo ja
hävitetään siitä kokonaislukuosa pois.
Niin kauan kuin A > 0, tehdään seuraavaa:
Kerrotaan A kahdella.
Jos A >= 1, kirjoitetaan numero 1 ja vähennetään A:sta 1,
muuten kirjoitetaan numero 0.

Huomaa, että tämä looppi ei välttämättä pääty koskaan.

Esimerkki:

A = 4.7
write A&1 -> '0'
A/=2 -> 2
write A&1 -> '0'
A/=2 -> 1
write A&1 -> '1'
A/=2 -> 0
A = 0.7
A*=2 -> 1.4
write '1', A=0.4
A*=2 -> 0.8 <--.
write '0' |
A*=2 -> 1.6 |
write '1', A=0.6 |
A*=2 -> 1.2 |
write '1', A=0.2 |
A*=2 -> 0.4 |
write '0' |
looppi --------'

Tuli siis 100.1{011..}

Joka voidaan muuttaa takaisin desimaaliluvuksi vaikka niin, että
muutetaan ensin tuo 100 desimaaliluvuksi painoarvoja laskemalla
(1*4 + 0*2 + 0*1 = 4), ja desimaaliosa seuraavasti:
1011011011 binääriluvuksi (tulee 731), ja
10000000000 binääriluvuksi (tulee 1024)
Ja saadaan tulokseksi 4 + 731/1024, joka on 4.7138671875,
eli likiarvo tuolle 4.7:lle.
Likiarvo on tietenkin sitä tarkempi, mitä enemmän desimaaleja
otettiin.
Vaikka joku luku olisi yhdessä lukujärjestelmässä päättyvä,
se ei välttämättä ole toisessa, tai voi vaatia enemmän
desimaaleja.
Esim binääriluku 0.00111 on sama kuin 7/32,
eli 0.21875.

--
Hi! I am the .signature virus. Please copy me into your own .sig and join in!

0 new messages