Kahden komplementti

En tiiä onko tää edes oikealla alueella, enkä viittinyt ihan tuonne ohjelmoinnin puolelle tunkea kun tässä lasketaan enemmän kuin ohjelmoidaan...


Tehtävänäni on laskea seuraavat laskut muuntamalla luvut neljäbittisiksi 2:n komplementtiseksi. Tarkista tulos desimaalilukuina kymmenjärjestelmässä.

a) 6[10] 1[10] 0110 ja 1 -> 0001
Sitten muutin ne 2. komplementeiksi: 0110 -> 1010 ja 0001 -> 1111

laskin nämä yhteen:
1010
1111
= 11001

Tämän kun muutan takaisin kymmenjärjestelmään, niin tästä tulee: 25 eikä 7 (6 1).

Missä kohtaa tein virheen?

Ja meneekö tossa b) kohdassa samalla tavalla, mutta muutan sen vain 3 (-2) ?

Kiitoksia etukäteen.
162163
Äänestä

Muut lukivat myös

Vastaukset 16

Vanhimmat

Saamasi summa on 2:n komplemetti-muodossa. Pitänee muuttaa takaisin.

11001 -> 1 alussa tarkoittaa negatiivista ja 0110 1=0111=7

En muista tarkkaan miten tuossa piti menetellä

Äänestä

  • 17++ kirjoitti:

    Siellä on painovirhe 103-456 po. 10^3-456

    Kokeilin laskea esimerkkiä 678-456 toisinpäin eli 456-678

    1000-678=322

    456 678=778
    Vastaus näyttää olevan 10:n komplemetti 222:sta (1000-778=222).
    Negatiivinen tulos on siis kantaluvun komplemettina.

    Äänestä

  • 17++ kirjoitti:

    Siellä on painovirhe 103-456 po. 10^3-456

    Kokeilin laskea esimerkkiä 678-456 toisinpäin eli 456-678

    1000-678=322

    456 678=778
    Vastaus näyttää olevan 10:n komplemetti 222:sta (1000-778=222).
    Negatiivinen tulos on siis kantaluvun komplemettina.

    "
    Kahden positiivisen luvun erotus (M – N), kun molempien kantaluku on r, lasketaan seuraavasti:


    1. Lisää luvun N komplementti lukuun M.

    2. Tutki syntyikö askeleen (1) tuloksena muistinumero eniten merkitsevien numeroiden summasta.


    a) Jos syntyi, hylkää muistinumero ja saat tuloksen

    b) Jos ei syntynyt, ota summasta komplementti ja kirjoita summan etumerkiksi miinus.
    "
    tuossahan tuo ohje olikin:)

    Äänestä

  • 17++ kirjoitti:

    Siellä on painovirhe 103-456 po. 10^3-456

    Kokeilin laskea esimerkkiä 678-456 toisinpäin eli 456-678

    1000-678=322

    456 678=778
    Vastaus näyttää olevan 10:n komplemetti 222:sta (1000-778=222).
    Negatiivinen tulos on siis kantaluvun komplemettina.

    Mistä tuo 1000 tulee?
    En oikein tunne tuota 10:n komplementtia, koska meillä on käytössä vain 1. ja 2.

    Yritin tuon ohjeen avulla tehdä tota vähennyslaskea eli b-kohtaa, mutta sain tällaista:

    3[10] - 2[10]
    0011 - 0010
    2.komplementiksi: 0011 -> 1100 1 -> 1101 ja 0010 -> 1101 1 -> 1110

    1. Lisää luvun N komplementti lukuun M.
    0011 1000 -> 0111 = 7
    Ei tainnut ihan sujua multa. Ymmärsinkö edes tuon ohjeen?

    Tuosta a) -kohdasta vielä, että sen tajusin. Mutta yhteenlaskun jälkeen tulee 11001 , missä tuo ensimmäinen tarkoittaa vaan negatiivisuutta. (ensimmäisen postaajan mukaan). Ja tästä saadaan 0111 eli 7. Jätetäänkö tuo 1 eli se negatiivisuus huomaamatta? Vai onko tämäkin kohta tajuttu väärin? Että miksi sinne tulee viides luku sinne eteen, esittämään negatiivia, vaikka vastaus on positiivinen?

    Koska kun luin netistä eri lähteistä ohjeita tähän ja esim täältä http://signal.hut.fi/digis/luento2/komplementti.html tuo ykkönen oli laitettu miinukseksi tonne eteen suoraan.

    Äänestä

  • A-tehtavässä ei pidä muuttaa , koska ovat positiivisia lukuja ja ne lasketaan yhteen.
    Laske ainä yhteen. Vähennyslasku muuttuu negatiivisen luvun lisäämiseksi..

    Unohda muuten yllä oleva vastaukseni ja katso alempana löytyviä ohjeita.


    siis
    a b=a b (tässä ei muuteta mitään)
    a-b=a (-b)
    -a-b= (-a) (-b)
    -a b=(-a) (b)

    Muuta aina negariivinen luku 2:n komplementiksi.

    Äänestä

  • Yritin tällä laskea tuota b-kohtaa ja eteen tuli tällainen ongelma, että:
    0011 -> 1101 (3 kahden komplementissa) ja 0010 -> 1101 -> 1110 (2 kahden komplementissa).

    Ongelmana, että pitäisi vielä saada tuo miinus merkki kakkoselle eli laittaa ykkönen eteen. Joten voinko tehdä sen näin: 11110

    Jolloin yhteenlaskusta tulisi:
    01101
    11110
    ???011

    Tuohon yhteen kohtaan tulisi kolme ykköstä (1 1 ja siihen viellä edellisen kohdan plussa laskun 1). Kuinka tällainen merkitään vai saako näin edes tehdä?

    Äänestä

  • 16+7 ja 20+2 kirjoitti:

    Yritin tällä laskea tuota b-kohtaa ja eteen tuli tällainen ongelma, että:
    0011 -> 1101 (3 kahden komplementissa) ja 0010 -> 1101 -> 1110 (2 kahden komplementissa).

    Ongelmana, että pitäisi vielä saada tuo miinus merkki kakkoselle eli laittaa ykkönen eteen. Joten voinko tehdä sen näin: 11110

    Jolloin yhteenlaskusta tulisi:
    01101
    11110
    ???011

    Tuohon yhteen kohtaan tulisi kolme ykköstä (1 1 ja siihen viellä edellisen kohdan plussa laskun 1). Kuinka tällainen merkitään vai saako näin edes tehdä?

    __01101
    __11110
    1011011

    Kenties tällainen? Tästä ottaisin neljä viimeistä: 1011
    Kahden komplementista takaisin -> 1010 -> 0101 -> 4 1 = 5
    Ei oikeaa tulosta...

    Äänestä

  • 16+7 ja 20+2 kirjoitti:

    Yritin tällä laskea tuota b-kohtaa ja eteen tuli tällainen ongelma, että:
    0011 -> 1101 (3 kahden komplementissa) ja 0010 -> 1101 -> 1110 (2 kahden komplementissa).

    Ongelmana, että pitäisi vielä saada tuo miinus merkki kakkoselle eli laittaa ykkönen eteen. Joten voinko tehdä sen näin: 11110

    Jolloin yhteenlaskusta tulisi:
    01101
    11110
    ???011

    Tuohon yhteen kohtaan tulisi kolme ykköstä (1 1 ja siihen viellä edellisen kohdan plussa laskun 1). Kuinka tällainen merkitään vai saako näin edes tehdä?

    Älä muuta 3:sta.koska se on positiivinen.

    0011
    1110
    10001
    Muistinumero (ylivuoto) on 1, joten vastaus saadaan suoraan.
    0001 (muistinumero heitetään pois, kun se on ensin huomioitu*)

    *)

    "2. Tutki syntyikö askeleen (1) tuloksena muistinumero eniten merkitsevien numeroiden summasta.

    a) Jos syntyi, hylkää muistinumero ja saat tuloksen

    b) Jos ei syntynyt, ota summasta komplementti ja kirjoita summan etumerkiksi miinus."

    ps. siellä linkin ohjeessa sanotaan että kantaluku korotetaan potenssiin n (n=numeroiden määrä) ja siitä vähennetään komplementoitava luku.
    binäärijärjestelmässä saman saa aikaan myös vaihtamalla nollat ykkösiksi ja päinvastoin kuten tuolla aikaisemmin lukeenkin. Ihmettelemäsi kymmenjärjestelmän 1000 oli siis 10^3 (laskettiin kolminumeroisia lukuja)

    Äänestä

  • 10101 kirjoitti:

    Älä muuta 3:sta.koska se on positiivinen.

    0011
    1110
    10001
    Muistinumero (ylivuoto) on 1, joten vastaus saadaan suoraan.
    0001 (muistinumero heitetään pois, kun se on ensin huomioitu*)

    *)

    "2. Tutki syntyikö askeleen (1) tuloksena muistinumero eniten merkitsevien numeroiden summasta.

    a) Jos syntyi, hylkää muistinumero ja saat tuloksen

    b) Jos ei syntynyt, ota summasta komplementti ja kirjoita summan etumerkiksi miinus."

    ps. siellä linkin ohjeessa sanotaan että kantaluku korotetaan potenssiin n (n=numeroiden määrä) ja siitä vähennetään komplementoitava luku.
    binäärijärjestelmässä saman saa aikaan myös vaihtamalla nollat ykkösiksi ja päinvastoin kuten tuolla aikaisemmin lukeenkin. Ihmettelemäsi kymmenjärjestelmän 1000 oli siis 10^3 (laskettiin kolminumeroisia lukuja)

    Korjaus

    "binäärijärjestelmässä saman saa aikaan myös vaihtamalla nollat ykkösiksi ja päinvastoin "

    Pitäisi olla

    "binäärijärjestelmässä saman saa aikaan myös vaihtamalla nollat ykkösiksi ja päinvastoin JA LISÄKSI vielä LISÄÄMÄLLÄ 1"

    Äänestä

  • 10101 kirjoitti:

    Älä muuta 3:sta.koska se on positiivinen.

    0011
    1110
    10001
    Muistinumero (ylivuoto) on 1, joten vastaus saadaan suoraan.
    0001 (muistinumero heitetään pois, kun se on ensin huomioitu*)

    *)

    "2. Tutki syntyikö askeleen (1) tuloksena muistinumero eniten merkitsevien numeroiden summasta.

    a) Jos syntyi, hylkää muistinumero ja saat tuloksen

    b) Jos ei syntynyt, ota summasta komplementti ja kirjoita summan etumerkiksi miinus."

    ps. siellä linkin ohjeessa sanotaan että kantaluku korotetaan potenssiin n (n=numeroiden määrä) ja siitä vähennetään komplementoitava luku.
    binäärijärjestelmässä saman saa aikaan myös vaihtamalla nollat ykkösiksi ja päinvastoin kuten tuolla aikaisemmin lukeenkin. Ihmettelemäsi kymmenjärjestelmän 1000 oli siis 10^3 (laskettiin kolminumeroisia lukuja)

    Ymmärsin nyt. Kiitos!

    Äänestä

  • 16+7 ja 20+2 kirjoitti:

    Ymmärsin nyt. Kiitos!

    Lisäkysymys vielä:

    Tarkoittaako tämä, että kahden komplimentissa numero saattaa olla negatiivinen tai positiivinen?

    Esim. jos pitää muuttaa pelkkiä numeroita kahden komplementtiin (ei laskea yhteen)

    4 = 0100 -> 1011 1 -> 1100
    -4 = ??

    vai
    -4 = 1100 -> 0011 1 -> 0100

    Äänestä

  • 16+7 ja 20+2 kirjoitti:

    Lisäkysymys vielä:

    Tarkoittaako tämä, että kahden komplimentissa numero saattaa olla negatiivinen tai positiivinen?

    Esim. jos pitää muuttaa pelkkiä numeroita kahden komplementtiin (ei laskea yhteen)

    4 = 0100 -> 1011 1 -> 1100
    -4 = ??

    vai
    -4 = 1100 -> 0011 1 -> 0100

    Kahden komplementin luvut ovat yksikäsitteisesti määrätyt, kun bittimäärä on määrätty.

    Nelibittisessä 2:n komplementiesityksessä
    1111 = -1 (eikä 15)
    1100= 4
    0111=7
    1000= -8

    Viisibittisessä (jos jossain käytettäisiin)
    01111 = 15 (eikä -1 tai 31)
    10000 = -16

    Äänestä

10:n komplementti voitaisiin laske samalla tavalla

neljällä numerolla
10^3-luku = 9999-luku 1
1 korvataan 8:lla
2 korvataan 7:llä
3 korvataan 6:lla
jne.

Myös 2-järjestemässä voi laskea

2^4-binaariluku = 1111-binaariluku 1

esim. 2n komplementti luvusta 1010
vähennyslasku
1111 (=2^4-1)
1010
=
0101(ykköset vaihtuu nolliksi ja päivaston)
1
=
0110

Äänestä

Tuossa voi ajatelle auton matkamittaria. Kun mittari näyttää kaksi ja sitä pyöritetään kolme pykälää taaksepäin, tulee mittariin 999 (niin monta 9:iä kuin mittarissa on numeroita)

Sama jos mittaria pyöritetään 2:sta 1000-3 pykälää eteenpäin, saadaan 999, ei tullut muistinumeroa, joten mittaria luetaan taaksepäin (10:n komplementti)

"b) Jos ei syntynyt, ota summasta komplementti ja kirjoita summan etumerkiksi miinus."

1000-999=1 -> -1

Äänestä

Kommentoi aloitusta


16+7 kirjoitti:

En tiiä onko tää edes oikealla alueella, enkä viittinyt ihan tuonne ohjelmoinnin puolelle tunkea kun tässä lasketaan enemmän kuin ohjelmoidaan...


Tehtävänäni on laskea seuraavat laskut muuntamalla luvut neljäbittisiksi 2:n komplementtiseksi. Tarkista tulos desimaalilukuina kymmenjärjestelmässä.

a) 6[10] 1[10] 0110 ja 1 -> 0001
Sitten muutin ne 2. komplementeiksi: 0110 -> 1010 ja 0001 -> 1111

laskin nämä yhteen:
1010
1111
= 11001

Tämän kun muutan takaisin kymmenjärjestelmään, niin tästä tulee: 25 eikä 7 (6 1).

Missä kohtaa tein virheen?

Ja meneekö tossa b) kohdassa samalla tavalla, mutta muutan sen vain 3 (-2) ?

Kiitoksia etukäteen.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu