<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="nl">
	<id>https://wikitest.nl/index.php?action=history&amp;feed=atom&amp;title=Two%27s_complement</id>
	<title>Two&#039;s complement - Bewerkingsoverzicht</title>
	<link rel="self" type="application/atom+xml" href="https://wikitest.nl/index.php?action=history&amp;feed=atom&amp;title=Two%27s_complement"/>
	<link rel="alternate" type="text/html" href="https://wikitest.nl/index.php?title=Two%27s_complement&amp;action=history"/>
	<updated>2026-06-20T09:40:48Z</updated>
	<subtitle>Bewerkingsoverzicht voor deze pagina op de wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://wikitest.nl/index.php?title=Two%27s_complement&amp;diff=180386&amp;oldid=prev</id>
		<title>Colani: 1 versie geïmporteerd</title>
		<link rel="alternate" type="text/html" href="https://wikitest.nl/index.php?title=Two%27s_complement&amp;diff=180386&amp;oldid=prev"/>
		<updated>2025-12-19T09:57:09Z</updated>

		<summary type="html">&lt;p&gt;1 versie geïmporteerd&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nieuwe pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Two&amp;#039;s complement&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; of &amp;#039;&amp;#039;&amp;#039;2-complement&amp;#039;&amp;#039;&amp;#039; is een getalsrepresentatie voor [[Geheel getal|gehele getallen]] die in computers voor [[Integer (informatica)|integers]] algemeen wordt gebruikt en waarmee de rekenoperaties relatief gemakkelijk kunnen worden geïmplementeerd. Een andere, minder gebruikelijke voorstelling is [[one&amp;#039;s complement]].&lt;br /&gt;
&lt;br /&gt;
Aan de hand van de representatie met 8 bits wordt uitgelegd hoe de toewijzing plaatsvindt aan de getallen −128, −127,..., −1, 0, 1, 2,...,127. Van de bitrijen die binair de getallen 0, 1,..., 255 voorstellen, worden de rijen met de meest significante bit 0, dus binair 0,1,...127, met hun [[Binair talstelsel|binaire waarde]] aan nul en de positieve getallen toegewezen. De bitrijen met de meest significante bit 1, dus binair 128,129,...255, stellen negatieve getallen voor en wel oplopend in deze volgorde −128, −127, ..., −1. Schematisch: &lt;br /&gt;
&lt;br /&gt;
: {|style=&amp;quot;margin:0; text-align:center;&amp;quot;&lt;br /&gt;
! binair || colspan=8 | bitrij || colspan=2 | two&amp;#039;s &amp;lt;br&amp;gt; complement&lt;br /&gt;
|-style=&amp;quot;width:2em;&lt;br /&gt;
! 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
! 1 || 0 || 0 || 0 || 0 || 0 || 0 || 0 || 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
! 2 || 0 || 0 || 0 || 0 || 0 || 0 || 1 || 0 ||  2&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! 126 || 0 || 1 || 1 || 1 || 1 || 1 || 1 || 0 || 126&lt;br /&gt;
|-&lt;br /&gt;
! 127 || 0 || 1 || 1 || 1 || 1 || 1 || 1 || 1 || 127&lt;br /&gt;
|-&lt;br /&gt;
! 128 || 1 || 0 || 0 || 0 || 0 || 0 || 0 || 0 || −128&lt;br /&gt;
|-&lt;br /&gt;
! 129 || 1 || 0 || 0 || 0 || 0 || 0 || 0 || 1 || −127&lt;br /&gt;
|-&lt;br /&gt;
! 130 || 1 || 0 || 0 || 0 || 0 || 0 || 1 || 0 || −126&lt;br /&gt;
|-&lt;br /&gt;
| ...&lt;br /&gt;
|-&lt;br /&gt;
! 254 || 1 || 1 || 1 || 1 || 1 || 1 || 1 || 0 || −2&lt;br /&gt;
|-&lt;br /&gt;
! 255 || 1 || 1 || 1 || 1 || 1 || 1 || 1 || 1 || −1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Het voorbeeld laat zien dat, in het geval dat 8 bits per getal beschikbaar zijn, een [[positief getal]] wordt weergegeven door de bitrij als [[Binair talstelsel|binair getal]] en de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;-de [[Bit (eenheid)|bit]] van een [[negatief getal]], die vooraan wordt weergegeven, gelijk aan 0 is. Voor negatieve getallen wordt in de binaire voorstelling van alle bits het complement genomen en bij het zo ontstane binaire getal 1 opgeteld. &lt;br /&gt;
&lt;br /&gt;
De getallen &amp;lt;math&amp;gt;-2^{n-1},\ldots, 2^{n-1}-1&amp;lt;/math&amp;gt; kunnen in two&amp;#039;s-complement met &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; bits worden voorgesteld. Voor een positief getal &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; is de binaire voorstelling  &lt;br /&gt;
: &amp;lt;math&amp;gt;b=\sum_{k=1}^nb_k2^{k-1}&amp;lt;/math&amp;gt;&lt;br /&gt;
van de bitrij &amp;lt;math&amp;gt;b_nb_{n-1}\ldots b_2b_1&amp;lt;/math&amp;gt; gelijk aan &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; en is &amp;lt;math&amp;gt;b_n=0&amp;lt;/math&amp;gt;. Voor het bepalen van de bitrij behorend bij een negatief getal &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; moet de absolute waarde &amp;lt;math&amp;gt;|N|&amp;lt;/math&amp;gt; van &amp;lt;math&amp;gt;2^n&amp;lt;/math&amp;gt; worden afgetrokken. &lt;br /&gt;
&lt;br /&gt;
In formule: &lt;br /&gt;
: &amp;lt;math&amp;gt;b=\begin{cases}N&amp;amp;\ \text{als } N \geq 0\\2^n - |N|&amp;amp;\ \text{als } N &amp;lt; 0\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hieruit volgt dat het gehele getal &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; dat wordt voorgesteld door de bitrij &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;, wordt gegeven door&lt;br /&gt;
: &amp;lt;math&amp;gt;N=\begin{cases}b&amp;amp;\ \text{als } b_n=0\\b-2^n&amp;amp;\ \text{als } b_n=1\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
waarbij &amp;lt;math&amp;gt;b_n&amp;lt;/math&amp;gt; feitelijk als tekenbit wordt gebruikt. &lt;br /&gt;
&lt;br /&gt;
Alternatief kan worden geschreven:&lt;br /&gt;
: &amp;lt;math&amp;gt;N=-b_n2^{n-1}+\sum_{k=1}^{n-1}b_k2^{k-1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Men ziet daaruit dat in two&amp;#039;s complement elke bit behalve de meest significante de gewone [[Machtsverheffen|macht]] van 2 als bijdrage vertegenwoordigt, dus van laag naar hoog 1, 2, 4, 8, ..., maar dat de meest significante een negatieve bijdrage &amp;lt;math&amp;gt;-2^{n-1}&amp;lt;/math&amp;gt; betekent. &lt;br /&gt;
&lt;br /&gt;
Het [[Tegengestelde (wiskunde)|tegengestelde]] &amp;lt;math&amp;gt;-N&amp;lt;/math&amp;gt; van het positieve getal &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; dat wordt voorgesteld door de rij &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; met tekenbit 0 en &amp;lt;math&amp;gt;n-1&amp;lt;/math&amp;gt; waarde-bits, bestaat uit de bitrij die verkregen wordt als het verschil, in het [[binair talstelsel]], van de bitrij bestaande uit &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; 0-en en een 1 als extra bit ervoor geplaatst, met de oorspronkelijke bitrij &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;. Met 8 bits wordt bijvoorbeeld het positieve getal 79 voorgesteld door 01001111 en −79 door 10110001. Tellen we beide op volgens de normale optelling in het binaire talstelsel, dan krijgen we als som de rij 100000000=2&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; (9 bits), die overigens zelf in de 8-bits representatie niet voorkomt. &lt;br /&gt;
&lt;br /&gt;
In two&amp;#039;s complement is er een representatie voor het getal 0. &lt;br /&gt;
&lt;br /&gt;
Uit het bovenstaande kan afgeleid worden dat de representatie van een negatief getal in 2-complement verkregen wordt door bij de representatie in [[one&amp;#039;s complement]] 1 op te tellen: −79 in 1-complement (8 bits) 10110000; tel er 1 bij op: 10110000 + 00000001 = 10110001, de voorstelling van −79 in 2-complement.&lt;br /&gt;
&lt;br /&gt;
Net als bij 1-complement wordt bij 2-complement de meest significante bit gebruikt om aan te geven of een getal positief is of negatief. Deze meest significante bit heeft echter een andere betekenis dan bij 1-complement: in plaats van de rol van een soort [[minteken]] te vervullen, staat de meest significante bit (zeg, bit nummer &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) voor &amp;lt;math&amp;gt;-1 \cdot 2^{n-1}&amp;lt;/math&amp;gt;. De rest van de bits wordt &amp;quot;normaal&amp;quot; geïnterpreteerd en een negatief getal wordt dan ook gevormd door de positieve waarde van de minder significante bits op te tellen bij &amp;lt;math&amp;gt;-1 \cdot 2^{n-1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
De relatie tussen positieve en negatieve waarden is als volgt:&lt;br /&gt;
&lt;br /&gt;
: Zij &amp;lt;math&amp;gt;b=0b_{n-1}\ldots b_1&amp;lt;/math&amp;gt; een bitrij die de waarde &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; representeert. Dan is (met dezelfde definitie voor complement van een bit als bij 1-complement) de bitrij die &amp;lt;math&amp;gt;-N&amp;lt;/math&amp;gt; representeert gelijk aan &amp;lt;math&amp;gt;1\overline{b_{n-1}} \ldots \overline{b_1} + 1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Omrekenen ==&lt;br /&gt;
Aan de hand van het getal −76 in 8-bitsrepresentatie worden verschillende omrekeningen besproken.&lt;br /&gt;
&lt;br /&gt;
=== Via 1-complement ===&lt;br /&gt;
Het getal 76 is binair in 8 bits: &lt;br /&gt;
: 0100 1100 &lt;br /&gt;
&lt;br /&gt;
Inverteren van alle bits geeft de 1-complement-voorstelling van −76:&lt;br /&gt;
: 1011 0011&lt;br /&gt;
&lt;br /&gt;
Daarbij moet 1 opgeteld worden om de voorstelling in 2-complement te krijgen:&lt;br /&gt;
: 1011 0100&lt;br /&gt;
&lt;br /&gt;
=== Met formule ===&lt;br /&gt;
: &amp;lt;math&amp;gt;(-76)_{2c} = 2^8 - 76 = 180 = 1011\ 0100_2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of alternatief:&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;-76 = -128 + 32 + 16 + 4 = (\text{in 2-complement})\ 1011\ 0100&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Terugrekenen ===&lt;br /&gt;
Welk getal wordt in 2-complement voorgesteld door 1011 0100?&lt;br /&gt;
&lt;br /&gt;
=== Via 1-complement ===&lt;br /&gt;
Het is een negatief getal, want de voorste bit is 1.&lt;br /&gt;
&lt;br /&gt;
Trek 1 af:&lt;br /&gt;
: 1011 0011 &lt;br /&gt;
&lt;br /&gt;
Inverteer alle bits; resultaat:&lt;br /&gt;
: 0100 1100 = 76&lt;br /&gt;
&lt;br /&gt;
Dus 1011 0100 is −76 in 2-complement.&lt;br /&gt;
&lt;br /&gt;
Omdat, behalve voor −128 het 2-complement van een getal het tegengestelde van dat getal is, kan ook berekend worden:&lt;br /&gt;
&lt;br /&gt;
Inverteren van alle bits geeft:&lt;br /&gt;
: 0100 1011&lt;br /&gt;
&lt;br /&gt;
Daarbij moet 1 opgeteld worden:&lt;br /&gt;
: 0100 1100 = 76&lt;br /&gt;
&lt;br /&gt;
Dus 1011 0100 is −76 in 2-complement.&lt;br /&gt;
&lt;br /&gt;
=== Snelle methode ===&lt;br /&gt;
: 1011 0100?&lt;br /&gt;
&lt;br /&gt;
Het is een negatief getal. &lt;br /&gt;
&lt;br /&gt;
Bepaal de [[absolute waarde]]. Werk van achter naar voren en kopieer de bits tot en met de eerste 1:&lt;br /&gt;
: xxxx x100&lt;br /&gt;
&lt;br /&gt;
Inverteer de resterende bits; resultaat:&lt;br /&gt;
: 0100 1100 = 76&lt;br /&gt;
&lt;br /&gt;
==Voorbeeld==&lt;br /&gt;
Bepaal in 8 bits −77 uit 77 in 2-complement. Binair is 77&amp;lt;sub&amp;gt;10&amp;lt;/sub&amp;gt;=01001101&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;. De representatie in 2-complement is dus ook &lt;br /&gt;
: 01001101. &lt;br /&gt;
Inverteren van alle bits levert:&lt;br /&gt;
: 10110010&lt;br /&gt;
Tel er 1 bij op &lt;br /&gt;
: 10110011 = −77 in 2-complement&lt;br /&gt;
&lt;br /&gt;
Dus in het kort is 2-complement gelijk aan 1-complement (inverteer alle bits) met daarbij 1 opgeteld. De 2-complement representatie van een integer is vooral zinvol in verband met het [[optellen]] van [[Getal (wiskunde)|getallen]] in [[hardware]]. Als 2-complement gebruikt wordt, maakt het niet uit of een of beide [[operand]]en negatief zijn. Hierdoor is een optelschakeling op een [[Geïntegreerde schakeling|computerchip]] eenvoudiger te implementeren dan voor andere representaties. Een aparte schakeling om een getal van een ander getal af te trekken, hoeft niet te worden gemaakt. In dat geval wordt een van de operanden negatief gemaakt alvorens deze op te tellen.&lt;br /&gt;
&lt;br /&gt;
== Modulorekenen ==&lt;br /&gt;
Rekenen in two&amp;#039;s complement met &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; bits betekent rekenen [[modulo]] &amp;lt;math&amp;gt;2^n&amp;lt;/math&amp;gt;. Met &amp;lt;math&amp;gt;n=8&amp;lt;/math&amp;gt; bits is bijvoorbeeld 56×7:&lt;br /&gt;
&lt;br /&gt;
        0011 1000          56&lt;br /&gt;
        0000 0111           7&lt;br /&gt;
        ————————— ×       ———&lt;br /&gt;
        0011 1000       &lt;br /&gt;
        0111 00&lt;br /&gt;
        1110 0&lt;br /&gt;
        ————————— +       ———&lt;br /&gt;
        1000 1000         136 = 392 mod 256&lt;br /&gt;
&lt;br /&gt;
== Rekenoperaties ==&lt;br /&gt;
[[Rekenen]] in two&amp;#039;s complement, dat wil zeggen [[optellen]], [[Aftrekken (wiskunde)|aftrekken]] en [[vermenigvuldigen]], gaan probleemloos op de gebruikelijke manier. Natuurlijk met de normale beperking van het aantal bits. Aan de hand van enkele voorbeelden in 8 bits zal een en ander gedemonstreerd worden.&lt;br /&gt;
&lt;br /&gt;
=== Optellen ===&lt;br /&gt;
Bereken 19 + 7:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0001 0011          19&lt;br /&gt;
    0000 0111           7&lt;br /&gt;
   —————————— +       ———&lt;br /&gt;
    0001 1010          26&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bereken 19 + (−7):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    0001 0011          19&lt;br /&gt;
    1111 1001          −7&lt;br /&gt;
   —————————— +       ———&lt;br /&gt;
    0000 1100          12&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bereken −19 + 7:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    1110 1101         −19&lt;br /&gt;
    0000 0111           7&lt;br /&gt;
   —————————— +       ———&lt;br /&gt;
    1111 0100         −12&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bereken −19 + (−7):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    1110 1101         −19&lt;br /&gt;
    1111 1001          −7&lt;br /&gt;
   —————————— +       ———&lt;br /&gt;
    1110 0110         −26&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aftrekken ===&lt;br /&gt;
Bereken 19 − 7:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        0001 0011          19&lt;br /&gt;
        0000 0111           7&lt;br /&gt;
       —————————— −       ———&lt;br /&gt;
        0000 1100          12&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bereken 19 − (−7):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        0001 0011          19&lt;br /&gt;
        1111 1001          −7&lt;br /&gt;
       —————————— −       ———&lt;br /&gt;
        0001 1010          26&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bereken −19 − 7:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        1110 1101         −19&lt;br /&gt;
        0000 0111           7&lt;br /&gt;
       —————————— −       ———&lt;br /&gt;
        1110 0110         −26&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bereken −19 − (−7):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        1110 1101         −19&lt;br /&gt;
        1111 1001          −7&lt;br /&gt;
       —————————— −       ———&lt;br /&gt;
        1111 0100         −12&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Vermenigvuldigen ===&lt;br /&gt;
Bereken 13 × 7:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        0000 1101          13&lt;br /&gt;
        0000 0111           7&lt;br /&gt;
       —————————— ×       ———&lt;br /&gt;
        0000 1101       &lt;br /&gt;
        0001 101&lt;br /&gt;
        0011 01&lt;br /&gt;
        ————————— +       ———&lt;br /&gt;
        0101 1011          91  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bereken 13 × (−7), alternatief −(13 × 7):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        0000 1101          13&lt;br /&gt;
        1111 1001          −7&lt;br /&gt;
        ————————— ×       ———&lt;br /&gt;
        0000 1101       &lt;br /&gt;
        0110 1&lt;br /&gt;
        1101&lt;br /&gt;
        101&lt;br /&gt;
        01&lt;br /&gt;
        1&lt;br /&gt;
        ————————— +       ———&lt;br /&gt;
        1010 0101         −91&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bereken −13 × 7, alternatief −(13 × 7):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        1111 0011         −13&lt;br /&gt;
        0000 0111           7&lt;br /&gt;
       —————————— ×       ———&lt;br /&gt;
        1111 0011&lt;br /&gt;
        1110 011&lt;br /&gt;
        1100 11&lt;br /&gt;
        ————————— +       ———&lt;br /&gt;
        1010 0101         −91   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bereken −13 × (−7), alternatief 13 × 7:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        1111 0011         −13&lt;br /&gt;
        1111 1001          −7&lt;br /&gt;
        ————————— ×       ———&lt;br /&gt;
        1111 0011&lt;br /&gt;
        1001 1&lt;br /&gt;
        0011&lt;br /&gt;
        011&lt;br /&gt;
        11&lt;br /&gt;
        1&lt;br /&gt;
        ————————— +       ———&lt;br /&gt;
        0101 1011          91&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Categorie:Computer]]&lt;br /&gt;
[[Categorie:Getalsysteem]]&lt;/div&gt;</summary>
		<author><name>Colani</name></author>
	</entry>
</feed>