Toon posts:

Two Complement notation

Pagina: 1
Acties:
  • 283 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik snap niet niet precies hoe men de negatieve waarde van een getal in de Complement notation bepaalt.

bv. 1010 = -6

de 1e 1 geeft aan dat het negatief is, maar hoe komt men dan aan die 6 ??

  • Mr. B.
  • Registratie: Mei 2000
  • Niet online
Op zondag 18 november 2001 22:05 schreef Tizzwat het volgende:
Ik snap niet niet precies hoe men de negatieve waarde van een getal in de Complement notation bepaalt.

bv. 1010 = -6

de 1e 1 geeft aan dat het negatief is, maar hoe komt men dan aan die 6 ??
Omzetten van unsigned naar two's complement: inverteer het en tel er 1 bij op.

6 unsigned binair is 0110
Dat geïnverteerd is 1001
Daar 1 bij opgeteld: 1010

That's all :)

StatBar.nl - @GoT

Het verschil tussen theorie en praktijk is in de praktijk altijd veel groter dan in theorie.


  • $n@p$hot
  • Registratie: Juni 2000
  • Laatst online: 10:13
1010 = -6
De eerste 1 geeft aan dat het getal negatief is. Dan hodt je dus nog 010 = 2 over. Dan pak je het grootst mogelijke getal dat je kan maken met 3 bits: 111 = 8 en daar trek je die 2 van af en dan hou je 6 over.

Verwijderd

Topicstarter
Hoe kom je aan die 0110 ??

Verwijderd

Topicstarter
Op zondag 18 november 2001 22:08 schreef $n@p$hot het volgende:
1010 = -6
De eerste 1 geeft aan dat het getal negatief is. Dan hodt je dus nog 010 = 2 over. Dan pak je het grootst mogelijke getal dat je kan maken met 3 bits: 111 = 8 en daar trek je die 2 van af en dan hou je 6 over.
Juist, dit zocht ik !

  • johnny7
  • Registratie: November 2000
  • Laatst online: 07-11-2023
Binaire represenatatie van het getal 6 = 0110.

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 16:49
0110 = 6

maak er -6 van:

inverteren: 1001
1 bij optellen: 1010

simpel toch?

  • $n@p$hot
  • Registratie: Juni 2000
  • Laatst online: 10:13
Op zondag 18 november 2001 22:09 schreef Tizzwat het volgende:
Hoe kom je aan die 0110 ??
0x8 + 1x4 + 1x2 + 0x1 = 6

  • Mr. B.
  • Registratie: Mei 2000
  • Niet online
Op zondag 18 november 2001 22:09 schreef Tizzwat het volgende:
Hoe kom je aan die 0110 ??
0*8 + 1*4 + 1*2 + 0*1 = 6

edit: te laat :P

StatBar.nl - @GoT

Het verschil tussen theorie en praktijk is in de praktijk altijd veel groter dan in theorie.


Verwijderd

Topicstarter
Op zondag 18 november 2001 22:11 schreef johnny7 het volgende:
Binaire represenatatie van het getal 6 = 0110.
Jah, maar je weet van tevoren niet of het 6 is.

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Bij two's complement heeft het MSB (Most Significant Bit) een negatieve waarde. In het voorbeeld:
code:
1
2
 1 0 1 0
-8 4 2 1 = -8 + 2 = -6

Voor een 8-bit waarde zit het dus zo:
code:
1
2
   1  0  0  1  0  1  1  0
-128 64 32 16  8  4  2  1 = -128 + 16 + 4 + 2 = -106

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:04

Creepy

Tactical Espionage Splatterer

Op zondag 18 november 2001 22:12 schreef Tizzwat het volgende:

[..]

Jah, maar je weet van tevoren niet of het 6 is.
So? Elk decimaal getal is om te zetten nar binair hoor! Hmmm.. kom de laatste tijd meer vragen etc. tegen over binaire waarden etc. Misschien iets voor de Programming FAQ?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Op zondag 18 november 2001 22:08 schreef $n@p$hot het volgende:
Dan pak je het grootst mogelijke getal dat je kan maken met 3 bits: 111 = 8
1 + 2 + 4 = 7

111 = 7 en geen 8...

  • [ti]
  • Registratie: Februari 2000
  • Niet online
De uitleg van Gerco hier is de enige juiste. De rest zijn allemaal truukjes waardoor je de achterliggende logica niet snapt.

  • Twilight Burn
  • Registratie: Juni 2000
  • Laatst online: 08-09 11:49
Op zondag 18 november 2001 22:49 schreef Tizzwat het volgende:

[..]

1 + 2 + 4 = 7

111 = 7 en geen 8...
Bedoeld wordt het aantal mogelijkheden dat je met 3 bits kan maken:

000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

2x2x2=8 mogelijkhedien

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op zondag 18 november 2001 23:07 schreef [ti] het volgende:
De uitleg van Gerco hier is de enige juiste. De rest zijn allemaal truukjes waardoor je de achterliggende logica niet snapt.
De uitleg van Gerco is in principe ook maar een truukje die nog steeds niet de achterliggende logica uitlegt.

Maar de logica is eigenlijk ook erg simpel. Stel je werkt met een totaal van 4 bits. Er zijn dan 16 mogelijkheden, bij unsigned van 0 t/m 15, en bij signed van -8 t/m 7.

Bij signed wordt de eerste bit gebruikt om het teken aan te geven; is ie 0 dan is het positief, en bij 1 is het negatief. Met de overgebleven bits ga je dan getallen maken: in totaal 8 mogelijkheden. 0000 t/m 0111 stelt 0 t/m 7 voor, en 1000 t/m 1111 stelt -8 t/m -1 voor.

Dan vraag je je misschien af: waarom gebruiken ze 1001 niet als -1, immers, de eerste 1 geeft het teken aan, en de overige 3 bits is gewoon het getal. Dat is niet logisch, want denk hier maar eens aan: je hebt 0000, en je trekt daar 1 vanaf. Dan krijg je 1111. Aangezien 0 - 1 = -1, is 1111 dus -1. Als je dan verder naar onderen gaat kom je uiteindelijk bij 1000, wat -8 is.

Je kunt het ook zien als een schaalverdeling (en ik doe het hier even met 3 bits, om het wat klein te houden :))
bij unsigned:
code:
1
2
000 001 010 011 100 101 110 111
 0   1   2   3   4   5   6   7

bij signed:
code:
1
2
000 001 010 011 100 101 110 111
 0   1   2   3  -4  -3  -2  -1

Als je dit 4 plaatsen opschuift krijg je dus
code:
1
2
100 101 110 111 000 001 010 011
-4  -3  -2  -1   0   1   2   3

als je hier 101 als -1 rekent, lopen de negatieve getallen in de verkeerde volgorde, waardoor je bij rekenwerk voor extra controle moet zorgen. (ook is 100 dan -0, wat hetzelfde is als 0, maar dan zou je ook kunnen zeggen dat 100 = -1, maar dan zit je weer met hetzelfde probleem als bij 101 = -1 :))


Na ja, heel verhaal, voor velen misschien oninteressant, maar het is alleem maar om aan te geven dat het niet gewoon 'zomaar' een afspraak is :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
OiSyN: Na ja, heel verhaal, voor velen misschien oninteressant, maar het is alleem maar om aan te geven dat het niet gewoon 'zomaar' een afspraak is :)
Wel degelijk interessant :) . Ik heb helaas nooit echt serieus deze bits&bytes materie gehad, terwijl ik nu wel bezig ben met static links, frame pointers, stack pointers, framesize, register allocatie, higher-order functions, frame layouts, optimalisatie, liveness en al dat gebrabbel... :O

Beetje vaag dus eigenlijk |:( . Op deze manier leer ik mooi een beetje bij. Ga zo door ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

hmmm

die-hard c'er doceert aan die-hard java'er
what's wrong with this picture ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Onno
  • Registratie: Juni 1999
  • Niet online
Op maandag 19 november 2001 00:24 schreef OiSyN het volgende:
die-hard c'er doceert aan die-hard java'er
what's wrong with this picture ;)
Idd, helemaal fout.. je moet gewoon ff gaan assemblen als je dit allemaal wilt doorgronden, C is daarbij totaal niet nodig. ;)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

dat zeg ik ook helemaal niet

ik ben een die-hard c'er, en mbravenboer is een die-hard java'er

en ik geef m les :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
OiSyN: ik ben een die-hard c'er, en mbravenboer is een die-hard java'er
Ach, die-hard java'er is wel wat sterk uitgedrukt, maar ik ben er inderdaad wel de meeste tijd mee bezig :) .
en ik geef m les :)
Ut bevalt me wel ;) . Je uitleg is erg duidelijk (ook in andere topic). Ik volg op dit moment een high-performance compilers cursus, maar af en toe loop ik toch wel tegen een beetje assembly-kennis gebrek aan (ben dus ook hard aan het bijleren). Duidelijke instructies gaat allemaal prima, maar shifts, unsigned berekeningen, exceptions en al die toestand wordt toch wel lastig... Maar wel erg leerzaam uiteraard :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

duidelijke uitleg? hmmm thanx! Ik wist van mezelf (en anderen bevestigen dat meestal :)) dat ik echt absoluut niet kan uitleggen, maar dat is dan meestal verbaal...

Misschien dat ik schriftelijk beter mijn verhaal kan uitdenken en later dingen kan aanpassen. Volgende keer als iemand vraagt of ik iets uit wil leggen (IRL dan) vraag ik wel of ie een laptop bij zich heeft :P

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
OiSyN: duidelijke uitleg? hmmm thanx! Ik wist van mezelf (en anderen bevestigen dat meestal :)) dat ik echt absoluut niet kan uitleggen, maar dat is dan meestal verbaal...
Nou ik vond het een keurige uitleg :) . Zowel in dit topic als in het big en little endian verhaal wist je een hoop duidelijk te maken :) .
Volgende keer als iemand vraagt of ik iets uit wil leggen (IRL dan) vraag ik wel of ie een laptop bij zich heeft :P
Lijkt me handig ja ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:04

Creepy

Tactical Espionage Splatterer

hmm.. ok.. Ik zit nu eigenlijk nog op de vraag te wachten waarom er naast het gebruik van een sign bit nog 1 moet worden opgeteld :)

bij alleen een sign bit:
(4 bit voorbeeld)
0001 is dan 1
1001 is dan -1

0000 is dan 0
1000 is dan -0 (-0.. oops!)

(dit is trouwens het 1 complement systeem (hmm.. deze opmerking is niet waar dus :) )
En om die -0 te voorkomen is het 2 complement systeem bedacht.

edit:
Blegh.. tis weer maandag ochtend en veel te vroeg... dit hierboven is al uitgelegd in dit topic

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
Assembler jah.. Praat me der niet van :(

Maar dan nog 1 vraagje, de TC notatie snap ik nu wel.
Hoe zit het met de excess notation ??
Het Sign bit is om gedraaid, maar ik zie de logica er niet zo in.

Gerco, heb je nog zo'n truukje hiervoor ?? :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op maandag 19 november 2001 09:19 schreef Creepy het volgende:
hmm.. ok.. Ik zit nu eigenlijk nog op de vraag te wachten waarom er naast het gebruik van een sign bit nog 1 moet worden opgeteld :)

bij alleen een sign bit:
(4 bit voorbeeld)
0001 is dan 1
1001 is dan -1

0000 is dan 0
1000 is dan -0 (-0.. oops!)

(dit is trouwens het 1 complement systeem)
En om die -0 te voorkomen is het 2 complement systeem bedacht.

edit:
Blegh.. tis weer maandag ochtend en veel te vroeg... dit hierboven is al uitgelegd in dit topic
behalve dat het al een keer is uitgelegd is het nog ontzettend fout ook

1000 is niet -1, maar -8... ga mijn (volgens mbravenboer duidelijke) verhaaltje nog maar eens lezen :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:04

Creepy

Tactical Espionage Splatterer

Op maandag 19 november 2001 15:42 schreef OiSyN het volgende:

[..]

behalve dat het al een keer is uitgelegd is het nog ontzettend fout ook

1000 is niet -1, maar -8... ga mijn (volgens mbravenboer duidelijke) verhaaltje nog maar eens lezen :)
bij alleen een sign bit is 1001 -1.
In het 1 complement systeem niet nee, dat was mijn fout. Hm.. ik zei wel 1 complement.. niet 2!
Ik moet eens stoppen met proberen advies te geven om een maandag.. dat gaat gewoon niet :)

Ennuh.. jij mag mijn verhaal wel beter lezen.. waar o waar heb ik gezegd dat 1000 -1 is?? Nergens toch? :)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Apache
  • Registratie: Juli 2000
  • Laatst online: 14-09 22:46

Apache

amateur software devver

2 maand geleden ook nog lang mee bezig geweest op school, binary & hexadecimaal rekenen, conversie's tussen alle talstelsels enz, is best leuk, hopelijk valt m'n examen erover ook nog wel mee :)

If it ain't broken it doesn't have enough features


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op maandag 19 november 2001 15:53 schreef Creepy het volgende:

[..]

Ennuh.. jij mag mijn verhaal wel beter lezen.. waar o waar heb ik gezegd dat 1000 -1 is?? Nergens toch? :)
nou, kijk:
0000 is dan 0
1000 is dan -0 (-0.. oops!)

(dit is trouwens het 1 complement systeem)
En om die -0 te voorkomen is het 2 complement systeem bedacht.
en aangezien je het over 1 erbij optellen had, ging ik er dus vanuit dat jij bedoelde dat 1000 -1 is :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:04

Creepy

Tactical Espionage Splatterer

Op maandag 19 november 2001 19:51 schreef OiSyN het volgende:

[..]

nou, kijk:
[..]

en aangezien je het over 1 erbij optellen had, ging ik er dus vanuit dat jij bedoelde dat 1000 -1 is :)
Hmmm zoiets wel ja. Ik ging iets te snel.. ik ging van sign bit meteen door naar 2 complement... sloeg 1 complement ff over :)

signbit: alleen een sign bit dus
1 complement: inverteren + sign bit
2 complement: inverteren + sign bit + 1 "er bij op tellen"

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1