Du har nästan säkert hört talas om negativa siffror. Om du till och med har haft en liten exponering för datavetenskap och datorprogrammering är begreppet binära tal inte helt främmande. Men om du inte har utforskat programmeringsvärlden personligen har du antagligen aldrig arbetat väsentligt med binära siffror.
Eftersom datorer inte kan "tänka" eller "bestämma" på egen hand utan kan följa beställda instruktioner med ofullständig noggrannhet, kom matematiker för länge sedan upp med ett sätt för datorer (eller tillräckligt tålmodiga människor) att göra addition, subtraktion och andra matematiska operationer med endast siffrorna 0 och 1.
Men finns det ett sätt att kombinera dessa två idéer för att producera negativa siffror? Är det så enkelt som att be en maskin att sticka en liten horisontell stapel framför ett befintligt nummer a la pen och papper, eller gör "bitar och byte" -faktorn saker mer involverade?
Vad är binära nummer?
Datorer har en enorm mängd processorkraft, och även en gammal clunker kan utföra beräkningar i en takt som verkar obegriplig för även den mest aritmetiskt begåvade människan. Men de är inte hjärnor, och det enda sättet att få dem att hantera komplex information är att förflytta allt möjligt till en av två stater, t.ex. PÅ eller AV.
I "dator-ese" kallas en enstaka 0 eller 1 som en bit. Grupper av dessa inkluderar nybble (4 bitar), den välkända byte (8), den ord (1) och långt ord (32).
De decimaltal som du vanligtvis ser, som 492 och 35, är "bas-10", eftersom de innehåller 10 progressiva symboler (siffrorna 0 till 9) som "rulla över" till nästa plats åt vänster - nästa "kraft 10". Binära nummer innehåller i stället bara två symboler (siffrorna 0 och 1) och är "bas-2." Varje rörelse åt vänster från slutet av numret är en ökande effekt på två: Slutsiffrorna representerar 1, nästa 2, sedan 4, 8, 16 och så vidare.
- Ett decimaltal är vilket som helst tal i bas-10-systemet, inte nödvändigtvis ett tal som innehåller en decimal.
Exempel på binära nummer
Det binära "nybble" 0101 har 1 på 1-platsen och 4-platsen och 0-nummer på 2 och 8-platsen. Således är dess decimalekvivalent 1 + 4 = 5.
På samma sätt motsvarar byten 1001 1100 128 + 16 + 8 + 4 (28 + 25 + 24 + 23) = 156.
De komplement av ett binärt tal är bara numret med siffrorna "bytte". Till exempel komplementet av 1001 1100 = 0110 0011.
Konvertera negativa nummer till binära
Hur du konverterar ett negativt decimaltal till ett binärt tal är förmodligen helt olikt andra numeriska omvandlingar du har uppträtt för att ditt sinne, med alla dess jämförande lättja, är mycket mer flexibelt på de flesta sätt än någonting CPU. Det är dock en enkel process.
Omvandlingen görs med hjälp av a två komplement binär, vilket kräver att programmeraren instruerar datorn att tolka alla binära tal som börjar med 1 som negativa. Programmet då konstruerar motsvarande positivt tal i binär, tar sitt komplement och lägger till ett.
Till exempel, med tanke på numret −47, skulle datorn skapa det binära numret för +47:
0001 1111
Komplementet till detta är:
1110 0000
Att lägga till en till detta ger:
1110 0001
Observera att datorn har "signerat" dessa siffror för att behandla en ledande 1 som negativ och bearbeta resultaten annorlunda än att helt enkelt lägga till krafterna på 2 som upptagits av symbolen 1.