Hoppa till huvudinnehåll

Tvåkomplementkalkylator

Konvertera mellan decimal och tvåkomplement binärt

Konvertera

Hur man Använder

  1. Välj inmatningstyp (Decimal eller Binär)
  2. Välj bitbredd (8, 16, 32 eller 64 bitar)
  3. Ange numret du vill konvertera
  4. Klicka på beräkna för att se tvåkomplementrepresentationen
  5. Granska konverteringsstegen och alla representationer

Vad är Tvåkomplement?

Tvåkomplement är en matematisk operation som används inom datavetenskap för att representera signerade (positiva och negativa) heltal i binär form. Det är den vanligaste metoden för att representera signerade heltal på datorer eftersom den förenklar aritmetiska operationer och eliminerar behovet av separata additions- och subtraktionskretsar.

I tvåkomplementnotation fungerar den mest signifikanta biten (MSB) som teckenbiten: 0 indikerar ett positivt tal, medan 1 indikerar ett negativt tal. Detta system tillåter datorer att utföra subtraktion med additionskretsar, vilket gör hårdvarudesign mer effektiv.

Hur Tvåkomplement Fungerar

För att konvertera ett positivt tal till tvåkomplement, konvertera det helt enkelt till binärt och fyll ut till önskad bitbredd. För negativa tal, följ dessa steg:

  • Konvertera det absoluta värdet av talet till binärt
  • Invertera alla bitar (ändra 0:or till 1:or och 1:or till 0:or) - detta kallas etterkomplement
  • Lägg till 1 till resultatet för att få tvåkomplementet
  • Fyll ut eller korta av till önskad bitbredd

Till exempel, för att representera -5 i 8-bitars tvåkomplement: 5 i binärt är 00000101, inverterat blir det 11111010, och att lägga till 1 ger 11111011.

Bitbredd och Värdeintervall

Bitbredden bestämmer intervallet av värden som kan representeras:

BitbreddMinimivärdeMaximivärdeTotalt Värden
8 bitar-128127256
16 bitar-32 76832 76765 536
32 bitar-2 147 483 6482 147 483 6474 294 967 296
64 bitar-9 223 372 036 854 775 8089 223 372 036 854 775 80718 446 744 073 709 551 616

Formeln för intervallet är: -(2^(n-1)) till (2^(n-1) - 1), där n är antalet bitar.

Praktiska Tillämpningar

  • Datorarkitektur: CPU:s aritmetisk-logiska enheter (ALU) använder tvåkomplement för alla heltalsoperationer
  • Programmering: Förståelse av heltalsöverflöde, underflöde och typintervall i C, C++, Java och andra språk
  • Digital Kretsdesign: Design av adderare, subtraktorer och aritmetiska kretsar
  • Inbyggda System: Arbete med register med begränsad bredd och minnesrestriktiva enheter
  • Kryptografi: Implementering av matematiska operationer för krypteringsalgoritmer
  • Assemblerspråk: Direkt manipulation av binär data på maskinkodsnivå

Fördelar med Tvåkomplement

  • Enkel representation av noll (till skillnad från tecken-storlek eller etterkomplement)
  • Addition och subtraktion använder samma hårdvarukrets
  • Inga specialfall för aritmetiska operationer
  • Enkel överflödesdetektering
  • Enkla jämförelseoperationer
  • Effektiv intervallanvändning (alla bitmönster representerar giltiga tal)

Vanliga frågor

Varför används tvåkomplement istället för tecken-storlek?
Tvåkomplement har flera fördelar: det har endast en representation av noll, använder samma krets för addition och subtraktion, och har inga specialfall för aritmetik. Tecken-storlek kräver olika logik för positiva och negativa tal och har två representationer av noll (+0 och -0).
Hur identifierar jag ett negativt tal i tvåkomplement?
I tvåkomplement, om den mest signifikanta biten (vänster bit) är 1, är talet negativt. Om den är 0, är talet positivt eller noll. Till exempel, i 8 bitar: 10000000 är negativt, medan 01111111 är positivt.
Vad händer när ett värde flödar över?
Överflöde inträffar när ett beräkningsresultat överskrider det representerbara intervallet för den givna bitbredden. Till exempel, i 8-bitars tvåkomplement resulterar addition av 127 + 1 i -128 på grund av övergång. De flesta programmeringsspråk och CPU:er sätter en överflödesflagga när detta inträffar.
Kan jag använda tvåkomplement för flyttal?
Nej, tvåkomplement är endast för heltal. Flyttal använder en annan representation (IEEE 754-standard) som inkluderar en teckenbit, exponent och mantissa för att representera decimalvärden och mycket stora eller små tal.
Hur konverterar jag tvåkomplement tillbaka till decimal?
Om teckenbiten är 0, konvertera binärt direkt till decimal. Om teckenbiten är 1, invertera alla bitar, lägg till 1, konvertera till decimal och negera sedan resultatet. Till exempel, 11111011 (8 bitar) inverterat är 00000100, lägga till 1 ger 00000101 (5), så resultatet är -5.

Relaterade Kalkylatorer

conversion
Ampere till Amperetimmar Kalkylator

Konvertera ström (Ampere) till laddningskapacitet (Amperetimmar)

conversion
Ampere till kW Kalkylator

Konvertera ström (Ampere) till effekt (Kilowatt)

conversion
Binär Kalkylator

Konvertera mellan binär, decimal, oktal och hexadecimal