Archief - Vragen rond talstelsels

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Wundagore

Legacy Member
donderdag heb ik mijn herex van computerarchitectuur

Xios hogeschool in Diepenbeek moest er een medeslachtoffer zijn :p
en bij het doorlopen van de leerstof van het 1ste trimester heb ik wat vragen die me niet meteen duidelijk zijn

1ste
wat is de decimale waarde van octale getal 8?

imo is dit een strikvraag, octaal gaat maar tot 7 maar ik ben niet zeker

2de
wat is het grootste positieve getal in 2 - complement notatie als we werken met een 32 bit patroon:

imo
511 want
32 bit = 4 bytes
1 bytes heeft als max waarde 128
4 * 128 = 512 -1 bit voor tekenbit en dat is 511
again, niet zeker :)

wat is het grootste positieve getal dat met een fictieve 8 bit floating point notatie bereikt kan worden met een normalisatie naar 1,....

hier heb ik totaal geen id

normaal is het
7 6 5 4 3 2 1 0
7 = tekenbit
6 + 5 = exponent in plus 2 notatie
4 3 2 1 0 = mantisse
hier ben ik totaal speechless
dan laatste, vermoed dat dit een fout in het boek is
in de IEEE short real notatie hebben we een exponent van 8 bits in een plus n notatie
dus 2^8-1= 2^7=128
dus een plus 128 notatie
maar in mijn boek staat een plus 127 notatie
een fout of zie ik iets over het hoofd.

alvast bedankt voor de moeite! :bow:

killgore

Legacy Member
1) heb jij gelijk octaal is 0->7. Das alsof ge de octale waarde van het decimale getal A zou vragen.
2) ik snap uw uitleg langs geen kanten, ze is ook raar: ge gaat bytes-max waarden niet zomaar vermenigvuldigen eh :s. Wa bedoelde trouwens met 2-complement notatie? De grootste positieve waarde voor een signed 4byte int is 2^31-1
3) kan nie veel van floating point bit voorstelling :x, srry

M1tch

Legacy Member
1. decimale waarde van het octale getal 8 ? wtf?


2. grootste waarde is idd 2^31

killgore, ik het verrast me dat je niet weet wat 2's complement is :wtf:


3. dunno, is te lang geleden :)

killgore

Legacy Member
M1tch zei:
grootste waarde is idd 2^31

killgore, ik het verrast me dat je niet weet wat 2's complement is :wtf:
ik snap nie wat em bedoelt met 2-complement notatie nee :x.

edit: opgezocht: is gewoon de meest-gangbare methode dus voor negatieve getallen. Ik weet wat het is, had dus nog nooit van die benaming gehoord :). Ge moet weten da ik nog nooit computerarchitectuur of zoiets heb gehad en nog maar 1 semester daadwerkelijk informatica, dus als het op benamingen en zo aankomt ga ik vaak nog de mist in ^^.

edit2: kben es aant opzoeken over floating-point getallen, ziet er niet te moeilijk uit, secondje :p.

rabsi

Legacy Member
M1tch zei:
1. decimale waarde van het octale getal 8 ? wtf?


2. grootste waarde is idd 2^31

killgore, ik het verrast me dat je niet weet wat 2's complement is :wtf:


3. dunno, is te lang geleden :)

is het niet (2^31)-1 :) want hij zij grootste positieve waarde de grootste negatieve waarde is -2^31 ge hebt altijd één positief getal minder in two's complement

Wundagore

Legacy Member
het is 2^30
de laatste bit verlies je door het tekenbit dat op 0 staat om een positief getal aan te geven.
ik had niet gedacht in bitpositie's :)

rabsi

Legacy Member
Wundagore zei:
het is 2^30
de laatste bit verlies je door het tekenbit dat op 0 staat om een positief getal aan te geven.
ik had niet gedacht in bitpositie's :)

als je het hebt over normale 32bit in two's complement ben je fout bezig denk ik zenne :s

edit: als je mij niet gelooft moet je maar eens uitrekenen op 8-bit niveau :) (2^7)-1 want daar is u grootste positieve getal in two's complement 127

simpele uitleg:
0111 1111 +127
0000 0001 +1
0000 0000 0
1111 1111 -1
1000 0000 -128

killgore

Legacy Member
ffs

maximale waarde is 1 nul met daarachter 31 1'en

bekijk het wat heuristischer als je me niet gelooft :p:

1 , maximale waarde: 1 ffcourse, ofte : 2^1-1
11 -> 3, of: (2^2)-1
...
31 1'en: (2^31)-1

van die floating point snap ek nie hoe ge aan 127 geraakt.

Als ge maar 2 bits hebt voor uw exponent is uw maximale exponent toch 2, dan kunde maximaal, met 5 mantelgetallen krijgen: 1.11111*2^2 = 111.111 =/=127 ?

Nu ja, kheb kort opgezocht, kan zijn dat ik niet alles doorheb of gewoon nie alle methoden heb bekeken ^^, vond et wel is interessant :).
Asge mij effe zegt waar men fout ligt kan ek u mssch helpen :x

rabsi

Legacy Member
killgore zei:
ffs

maximale waarde is 1 nul met daarachter 31 1'en

bekijk het wat heuristischer als je me niet gelooft :p:

1 , maximale waarde: 1 ffcourse, ofte : 2^1-1
11 -> 3, of: (2^2)-1
...
31 1'en: (2^31)-1

van die floating point snap ek nie hoe ge aan 127 geraakt.

Als ge maar 2 bits hebt voor uw exponent is uw maximale exponent toch 2, dan kunde maximaal, met 5 mantelgetallen krijgen: 1.11111*2^2 = 111.111 =/=127 ?

Nu ja, kheb kort opgezocht, kan zijn dat ik niet alles doorheb of gewoon nie alle methoden heb bekeken ^^, vond et wel is interessant :).

u oplossing voor two's complement klopt allesinds, die had ik ook

een mantisse is normaal genormaliseerd en kan niet groter zijn dan 1 ... dus dat zal wel niet kloppen :s ... ik zou begod niet weten wat 8 bit fictieve floating point is :) nog nooit tegengekomen :wtf:

killgore

Legacy Member
rabsi zei:
u oplossing voor two's complement klopt allesinds, die had ik ook

een mantisse is normaal genormaliseerd en kan niet groter zijn dan 1 ... dus dat zal wel niet kloppen :s ... ik zou begod niet weten wat 8 bit fictieve floating point is :) nog nooit tegengekomen :wtf:
awel

mantisse van 5 bits, bv 10100

wordt dan toch 1.10100 ?

Dat heb ik gedaan ze.

[BAT] Hydra

Legacy Member
wat is de decimale waarde van octale getal 8?

'8' bevat geen tekens van het octale talstelsel​

wat is het grootste positieve getal in 2 - complement notatie als we werken met een 32 bit patroon:

Dit is 0111...1111 (31 keer een '1')

0 geeft aan dat het om een positief getal gaat.
Al de '1'tjes maximaliseren het getal.

1111...1111 (31 keer een '1') is decimaal (2^31)-1 of 2147483647​

wat is het grootste positieve getal dat met een fictieve 8 bit floating point notatie bereikt kan worden met een normalisatie naar 1

Ervan uitgaande dat dit juist is:

normaal is het
7 6 5 4 3 2 1 0
7 = tekenbit
6 + 5 = exponent in plus 2 notatie
4 3 2 1 0 = mantisse


Je wilt een zo groot mogelijk getal bekomen. De structuur van je getal ziet er als volgt uit:

Code:
signbit - exponent in 2 plus - mantisse met verborgen 1,

De signbit moet een positief getal aangeven.
De exponent maximaliseer je.
De mantisse maximaliseer je ook.

Je krijgt:

Code:
signbit - exponent in 2 plus - mantisse met verborgen 1,
0       - 11                 - (1,)11111

De gemaximaliseerde exponent in 2 plus notatie is '11'.
De gemaximaliseerde exponent in 2 plus notatie, decimaal, is 3.
De gemaximaliseerde exponent, decimaal is 3-2, is 1.

Een decimale exponent van 1, betekent dat je om de waarde van je getal te bekomen, je de komma 1 plaats naar rechts mag schuiven.

We schuiven nu de komma op naar rechts ,zoveel keer als de decimale exponent aangeeft. Je getal is nu 11,11110 in binair. We moeten nu geen rekening meer houden met de exponent, omdat we deze weggewerkt hebben in het getal.



11,11110 is exact

Code:
2^1 2^0 | 2^-1 2^-2 2^-3 2^-4
  1   1 ,    1    1    1    1

  2  +1   +0,5 +...

2+1+0,5+0,25+0,125+0,0625 = 3,9375

in de IEEE short real notatie hebben we een exponent van 8 bits in een plus n notatie

Deze standaard maakt gebruikt van de excess 127 (= plus 127) notatie. De exponent wordt binair opgeslagen in 8 bits.

Wil je een exponent die decimale waarde 3 heeft opslagen, dan doe je 3+127=130, en sla je 130 binair op in de 8 bits.


Code:
      Bit nr.
      87654321
130 = 10000010

Omdat we de exponent die we wensen op te slagen altijd +127 doen, en het resultaat van de optelling binair opslagen in 8 bits, kunnen we niet alle exponenten opslagen. Er geldt 128 >= op te slagen exponent >= -127. Als je immers een exponent met decimale waarde 456 wil opslagen, ga je 456+127 trachten binair op te slagen in 8 bits, en dit zal niet lukken.​

bron:
http://en.wikipedia.org/wiki/Floating_point
http://en.wikipedia.org/wiki/Two's_complement
http://en.wikipedia.org/wiki/Normal_number_(computing)

Wundagore

Legacy Member
over de 8 bit FP

door het normaliseren ga je altijd een getal in de vorm van 1,mantisse hebben
hierdoor kan je die 1 weglaten en win je een bit voor de precisie
nu wij hebben dat gezien met 8 bits voor het uitleggen
als ze al meteen beginnen met 32 bit getallen is het moeilijker off course :p

edit: thx Hydra!

over die grootste waarde

sorry ik dacht dat jullie met die -1 bedoelde exponent -1 :p

rabsi

Legacy Member
killgore zei:
awel

mantisse van 5 bits, bv 10100

wordt dan toch 1.10100 ?

Dat heb ik gedaan ze.

sorry ik kon u decimale van u binaire getallen niet onderscheiden en omgekeerd :s

killgore

Legacy Member
rabsi zei:
sorry ik kon u decimale van u binaire getallen niet onderscheiden en omgekeerd :s
n/p :), mijn uitleg is vaak warrig, ma het meeste dat er stond was binair bedoelt.

@hydra: de exp kan ook negatief zijn eh :), enkel is het hier meestal omgekeerd als bij +2 notatie. Bij 2 bits heb je hier -1,0,1,2, gewoon zou zijn: -2,-1,0,1. Dus 3 kan ja afaik niet bekomen als exp. Maar zelfs gebruik je +2, dan is uw maximale positieve exponent nog maar 1.

edit: nvm, heb er overgelezen da ge -2 deed ;). Ma dan is het niet echt gemaximaliseerde exponent (wel bitsgewijs, niet in werkelijke berekening).

[BAT] Hydra

Legacy Member
killgore zei:
Ma dan is het niet echt gemaximaliseerde exponent (wel bitsgewijs, niet in werkelijke berekening).

Groter dan een decimale coefficient van 1 kan je niet gaan als je conform wilt blijven met de veronderstellingen.

{decimale_exponent} C {-2,-1,0,1}

killgore

Legacy Member
[BAT] Hydra zei:
Groter dan een decimale coefficient van 1 kan je niet gaan als je conform wilt blijven met de veronderstellingen.

{decimale_exponent} C {-2,-1,0,1}
Het is dat dat ik erbij vermelde :):
In principe is het {-2,-1,0,1}, maar zowat overal waar ik ga zoeken rond floating points werken ze met een conversie (die jij trouwens ook doet ;)) waardoor je ipc krijgt {-1,0,1,2}. Als het gewoon 2-complement notatie is heb jij gelijk, buiten dat je dan niet die conversie moet doen en dat bitsgewijs de grootste positieve exponent 01 is (edit: wat dus uiteindelijk ook evolueert in maximale exponent 1).

[BAT] Hydra

Legacy Member
killgore zei:
Het is dat dat ik erbij vermelde :):
In principe is het {-2,-1,0,1}, maar zowat overal waar ik ga zoeken rond floating points werken ze met een conversie (die jij trouwens ook doet ;)) waardoor je ipc krijgt {-1,0,1,2}. Als het gewoon 2-complement notatie is heb jij gelijk, buiten dat je dan niet die conversie moet doen en dat bitsgewijs de grootste positieve exponent 01 is (edit: wat dus uiteindelijk ook evolueert in maximale exponent 1).

Ik snap niet goed wat je probeert duidelijk te maken. Nergens wordt er gebruik gemaakt van een 2-complement notatie in de uitwerking van de 3e vraag.

De exponent van een floating point getal wordt opgeslagen in bits, door gebruik te maken van de excess n notatie, met n een positief geheel getal.

Meestal voldoet die n aan

Code:
n = (2^m)-1 
-met m een positief geheel getal
-m+1 is het aantal bits voorhanden om de exponent in op te slagen

Vb: In de IEEE standaard voor 'short' floating point getallen, is m = 7, waardoor n = 127. Men zegt dat de IEEE standaard een excess 127 notatie gebruikt om de exponent in 7+1 bits te bewaren.

In de opgave stond dat er gebruik gemaakt wordt van de excess 2 notatie, ofte de plus 2 notatie, en de exponent in 2 bits bewaard zal worden. In dit geval gaat inderdaad de regel

Code:
n = (2^m)-1 
-met m een positief geheel getal
-m+1 is het aantal bits voorhanden om de exponent in op te slagen

niet op. Omdat het onmogelijk is een m te vinden als n = 2.

Gegeven dat de exponent dus in 2 bits bewaard zal worden, en we gebruik maken van de plus 2 notatie, krijgen we de volgende verzameling van mogelijk op te slagen decimale exponenten (we moeten elke exponent eerst optellen met 2, dit is de excess 2 notatie, en dan binair in bits opslagen)

We kunnen -2 opslagen omdat -2+2 = 0. 0 valt binair op te slagen met 2 bits als '00'.
We kunnen -1 opslagen omdat -1+2 = 1. 1 valt binair op te slagen met 2 bits als '01'.
We kunnen 0 opslagen omdat 0+2 = 2. 2 valt binair op te slagen met 2 bits als '10'.
We kunnen 1 opslagen omdat 1+2 = 3. 3 valt binair op te slagen met 2 bits als '11'.

Verwar dit niet met de 2-complement notatie, waar 1 ook toevalligerwijze de grootst mogelijke op te slagen decimale exponent is. Het verschil zit hem in de wijze waarop we een decimaal getal in bits opslagen.
Om 1 op te slagen met 2-complement notatie, staan de bits op 01.
Om 1 op te slagen met excess-2 notatie, staan de bits op 11.

killgore

Legacy Member
Danke :), duidelijke uitleg nu, kzie waar men redenering fout ging (ivm de opslag van die exponent).


Weeral iet bijgeleerd se :).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan