Hvordan konvertere negative tall til binære

Du har nesten helt sikkert hørt om negative tall. Hvis du har hatt litt eksponering for datavitenskap og dataprogrammering, er ikke begrepet binære tall helt fremmed. Men med mindre du har utforsket programmeringsverdenen personlig, har du sannsynligvis aldri jobbet vesentlig med binære tall.

Fordi datamaskiner ikke kan "tenke" eller "bestemme" alene, men kan følge bestilte instruksjoner med sviktende nøyaktighet, kom matematikere for lenge siden opp med en måte for datamaskiner (eller tilstrekkelig tålmodige mennesker) å gjøre addisjon, subtraksjon og andre matematiske operasjoner med bare sifrene 0 og 1.

Men er det en måte å kombinere disse to ideene for å produsere negative tall? Er det så enkelt som å fortelle en maskin å stikke en liten horisontal stolpe foran et eksisterende nummer a la pen og papir, eller gjør "bits and bytes" -faktoren ting mer involvert?

Hva er binære tall?

Datamaskiner har enorm prosessorkraft, og til og med en gammel klunker kan utføre beregninger i en hastighet som virker uforståelig for selv det mest aritmetisk begavede mennesket. Men de er ikke hjerner, og den eneste måten å få dem til å håndtere kompleks informasjon er å henvise alt mulig til en av to stater, for eksempel PÅ eller AV.

I "computer-ese" blir en enkelt 0 eller 1 referert til som en bit. Grupper av disse inkluderer nybble (4 biter), den velkjente byte (8), den ord (1) og langt ord (32).

Desimaltallene du vanligvis ser, som 492 og 35, er "base-10", fordi de inkluderer 10 progressive symboler (sifrene 0 til 9) som "velte" til neste plass til venstre - neste "kraft 10." Binære tall inneholder i stedet bare to symboler (sifrene 0 og 1) og er "base-2." Hver bevegelse mot venstre fra slutten av tallet er en økende kraft på to: Endesifrene representerer 1, de neste 2, deretter 4, 8, 16 og så videre.

  • Et desimaltall er et hvilket som helst tall i base-10-systemet, ikke nødvendigvis et tall som inkluderer et desimaltegn.

Eksempler på binære tall

Den binære "nybble" 0101 har 1 på 1-plass og 4-plass, og 0-er på 2 og 8-plassering. Dermed er desimalekvivalenten 1 + 4 = 5.

Tilsvarende tilsvarer byten 1001 1100 128 + 16 + 8 + 4 (28 + 25 + 24 + 23) = 156.

De komplement av et binært tall er bare tallet med sifrene "slått". For eksempel komplementet på 1001 1100 = 0110 0011.

Konvertere negative tall til binære

Hvordan du konverterer et negativt desimaltall til et binært tall er sannsynligvis ganske ulikt andre numeriske konverteringer du har opptrådt fordi tankene dine, på tross av dens sammenlignende dovendyr, er mye mer fleksible på de fleste måter enn noen annen PROSESSOR. Det er imidlertid en grei prosess.

Konverteringen gjøres ved hjelp av en to komplement binær, som krever at programmereren instruerer datamaskinen om å tolke ethvert binært tall som begynner med 1 som negativt. Programmet da konstruerer det tilsvarende positive tallet i binær, tar komplementet og legger til ett.

For eksempel, gitt tallet −47, vil datamaskinen lage det binære tallet for +47:

0001 1111

Komplementet til dette er:

1110 0000

Å legge en til dette gir:

1110 0001

Merk at datamaskinen har "signert" disse tallene for å behandle en ledende 1 som negativ og behandle resultatene annerledes enn å bare legge sammen kreftene til 2 okkupert av symbolet 1.

  • Dele
instagram viewer