Beste svaret
Veldig gode svar allerede her. For å prøve å legge til litt mer til det som allerede er sagt:
En datamaskin bruker den samme ideen (dvs. mange på / av-signaler) for å lagre / produsere resultater. Dermed «tenker» en datamaskin i PÅ eller AV, vi bruker bare representasjonen av 1 for dens PÅ og 0 for dens AV …
For det meste gjør den alle disse «smarte» tingene gjennom veldig forenklet matematikk – ved å bruke bare tall. Men den bruker tall på en annen måte som deg eller meg. Vi pleier å tenke på tall som 0, 1, 2, 3, … 9, 10 osv. En datamaskin har ikke det privilegiet, den kan bare «tenke» på 0 og 1. Men det betyr fortsatt at det kan gjøre den samme matematikken vi kan med de 10 (eller andre) sifrene. Årsaken er at på samme måte som vi bestemmer oss for å bruke et annet siffer datamaskinen «bestemmer» seg for å bruke mer. Dvs. hva er etter 9? 10, selvfølgelig, vi gjentar bare et mønster, ikke sant?
Dette blir referert til som basen til det tallsystemet vi bruker. F.eks. den normale mennesker bruker er base 10 (eller desimal) og det datamaskinen bruker er binær (eller base 2). Så når en datamaskin teller, teller den slik: 0 => 0 1 => 1 2 => 10 3 => 11 4 => 100 5 => 101 … 9 => 1001 10 => 1010 11 => 1011 etc .
Det er også andre måter, noen ganger bruker vi dem til å matche datamaskinens metode litt mer nøyaktig. F.eks. kan vi telle i heksadesimal – base 16 i stedet for vanlig base 10. I dette tilfellet har 6 ekstra tegn å legge til de mulige sifrene. Vanligvis bruker vi disse (vi kan også gå med base 8 oktal, eller hva vi velger) fordi de samsvarer med kreftene til 2 som et binært system bruker – dvs. basen 16 faller nøyaktig på kreftene til to (hopper over noen, men faller aldri på noe som ikke er en kraft på 2 som base 10-systemet gjør). Den største velsignelsen med dette er at antall sifre som kreves i hex er proporsjonalt med antall sifre i søppelbøtte (i dette tilfellet kartlegges hvert siffer i sekskant på 4 sifre i søppelkassen – mye lettere å konvertere til / fra). Hvis vi bruker heksadesimal (base 16), ville vi telle slik: Dec => Hex => Bin .. . 9 => 9 => 1001 10 => A => 1010 11 => B => 1011 … 15 => F => 1111 16 => 10 => 10000 17 => 11 => 10001 … 31 => 1F => 11111 32 => 20 => 100000 33 => 21 => 100001 …
Fra dette gjøres alle former for matematikk omtrent på samme måte som du lærte matematikk. F.eks. legge til 2 tall:
\_\_dec => hex => bin
25 19 11001
+ 16 10 10000
----------------------
31 29 01001
+ 10 100000 (carry)
----------------------
41 29 101001
Den samme typen ting gjelder all matematikk, multiplikasjon, divisjon, subtraksjon osv. Og fra det strekker den seg også til ytterligere ting som røtter, eksponenter, trig osv. .
Nå er alt annet som vises av datamaskinen, bare forskjellige måter å representere disse tallene på. F.eks. teksten på denne siden er bare en haug med tall, hver gitt en spesifikk «forståelse» ved at et spesifikt tall representerer et bestemt tegn. En av de viktigste metodene for koding av bokstaver er ASCII-sekvensen ( ASCII-tegnkoder og html-, oktal-, hex- og desimaldiagramkonvertering ). Ved at bokstaven A får tallet 65 (i desimal), altså 41 (hex) og 1000001 (bin).
Men vanligvis må slike tall deles, ellers vet vi ikke hvor en starter og en annen stopper – datamaskiner har ikke engang privilegiet å bruke mellomrom. For å komme rundt dette bruker datamaskinen angitte grupper med binære sifre. Vanligvis i grupper på 8 (kalt Bytes) siden dette i seg selv er en styrke på 2 og gir en rimelig anstendig mengde mulige tegn (256 muligheter). Hvis tallet er lavt, er den øvre delen bare fylt med 0s. Så faktisk ville et A bli lagret i en datamaskin som 01000001, og polstret det første ikke-nødvendige sifferet med en 0. Det er også andre måter, f.eks. UTF8 sier i utgangspunktet: «Hvis den første biten er en 1, er det ytterligere 8 sifre som følger denne, som deretter utvider koden til å inkludere enda flere muligheter.»
Og til slutt, ting som grafikk / bilder / 3d / lyd / etc. er alle bare kodet ved å gi hver variant et annet tall å vise. F.eks. Består fargene som vises på denne skjermen av små prikker, hver med en spesifikk farge (vanligvis kodet i noe som RGB – Rød / Grønn / blå intensitet som et tall fra 0 til (si) 255 for hver).
Det blir enda viktigere når vi begynner å se på handlingene en datamaskin kan gjøre. Dette er også bare «tall» kodet for å bety forskjellige «ting må skje». F.eks. kan datamaskinens CPU ha et instruksjonssett (dvs. en koding av forskjellige mulige handlinger) der en av dem er instruksjonen om å legge sammen tall, en annen å trekke fra, en annen til bytt dem fra 1s til 0s og visa versa, etc. etc.Dette er hva «programvare» består av – av / på-signalene vi ser som analoge med 1 og 0, i mønstre som passer til handlingene programvaren trenger at CPU-en skal utføre.
Men siden det hele starter fra det av / på, som tolkes som enten 1 eller 0 … en datamaskin bruker bare 1s og 0s. Det gjør det bare ved å se på mønstrene til 1s og 0s som følger hverandre. Mønsteret er det som gir 1 og 0 «betydning», på egenhånd har de veldig begrenset betydning.
Svar
Det betyr vanligvis at vi ikke forstår datamaskiner.
Seriøst.
Hvis du vil se hvorfor det er forvirrende, må du ikke se lenger enn strømbryteren på datamaskinen. Ser du det morsomme trident-symbolet? Har du noen gang lurt på hva det betyr?
At «sa 1 lagt på en 0.
Hvorfor?
Tilbake på de tidligste IBM-PC-ene var det en stor, klumpete vippebryter merket noe sånt som:
1 – På 0 – Av
Over tid ble bryterne mindre og ble til slutt knapper, noe som betyr at alt ordet var tullete, så vi fikk symbol som alle vet, men ingen forstår.
Det er stort sett alt du trenger å vite om dette spørsmålet: Datamennesker er ganske dumme, eller i det minste lat.
Men det » er ikke tilfredsstillende, mistenker jeg.
Bryteren representerer to tilstander, på og av. Knappene gjør det samme, bortsett fra at staten er usynlig for den tilfeldige observatøren, så vi trenger indikatorlys for å fortelle oss om den interne bryteren.
Men den er mer gjennomgripende enn dette. Hvis du krymper deg ned inne i datamaskinen, har mikrochipene transistorer i seg, som er (snill og ikke fortell noen elektriske ingeniører jeg sa dette) som små brytere. De slipper strøm gjennom (på) eller de ikke (av) ), og de ordnet for å behandle data. Før vi hadde transistorer allment tilgjengelige, brukte vi reléer for samme formål, brytere for å lagre en tilstand, på samme måte som lysbryteren din «husker» at du ville ha lysene på.
Når vi snakker om dataene som behandles, vil vi lese av på / av-tilstandene til transistorene (liksom; jeg forenkler her, men hvis du vil slå opp hvordan dataminne fungerer, vil jeg vente her), vi vil ha noe mer kompakt enn «på, på, av, på, på, av, av, av.» Jeg berørte og gjorde omtrent et halvt dusin feil ved å skrive det, selv uten noen spesifikk verdi i tankene, hvis du vil forstå hvorfor det ikke kom til å fly. Derfor skriver vi dem faktisk som nuller og ener, for eksempel 11011000
.
Men selv det er litt kjedelig, så vi kan gruppere bitene (binære sifre) i grupper på tre, som er oktale (base-8) tall, 330
i dette sak. Det er forvirrende, så mer sannsynlig bruker vi heksadesimale (base-16) tall, som tilsvarer fire biter, D8
her.
Å bruke krefter av to er nyttig, fordi det betyr (hvis vi er på en primitiv datamaskin der dette er levedyktig) at vi kan se på signalene på linjene i en gruppe. Representasjonene ovenfor er nyttige, mens 216 (desimalrepresentasjonen) ikke vil være til stor nytte for personen som arbeider med datamaskinen.
Men for å komme tilbake til poenget, gjør ikke selve datamaskinen det bruk alt annet enn av-på-tilstander, som vi tolker som nuller og ener, heksadesimale sifre, tall, tegn (bokstaver, sifre, symboler og mellomrom), instruksjoner og et hvilket som helst antall andre ting. Datamaskinen har imidlertid ingen anelse om denne tolkningen.
Vel, du kan hevde at instruksjonene faktisk er forstått, siden av-på-statene faktisk tvinger en avgjørelse om hva de skal gjøre videre. Men absolutt ikke resten.