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