Netrom00 Skrevet 15. juli 2015 Del Skrevet 15. juli 2015 Jeg lurer på hvordan datamaskinen konverter fra det binære tallsystemet til titallsystemet, og hvordan dette skjer helt på det grunnleggende nivået i datamaskinen. Jeg har sjekket litt rundt på nettet, og på alle metodene jeg har sett så må man også regne med titallsystemet for å få det til. Derfor skjønner jeg ikke hvordan datamaskinen får dette til, siden den bar kan regne i det binære tallsystemet? Takk for alle svar Lenke til kommentar
Zash Skrevet 15. juli 2015 Del Skrevet 15. juli 2015 Hva er det egentlig du lurer paa? Datamaskinen vet at 11111111 er 255, men skjønner at det egentlig ikke er det du lurer paa. Lenke til kommentar
Vakuum Skrevet 15. juli 2015 Del Skrevet 15. juli 2015 Jeg har sjekket litt rundt på nettet, og på alle metodene jeg har sett så må man også regne med titallsystemet for å få det til. Hva mener du med dette? Har du eksempler? Alt inni datamaskinen er enten 0 eller 1. Alltid. Lenke til kommentar
Emancipate Skrevet 15. juli 2015 Del Skrevet 15. juli 2015 Jeg lurer på hvordan datamaskinen konverter fra det binære tallsystemet til titallsystemetEnkelt og greit, den gjør ikke det. Det den gjør er å bruke en matematisk metode med flere steg for å omgjøre bitkombinasjonen som står for et tall til en bitkombinasjon som står for talltegnene, og tegne dem på skjermen. (jeg skriver % foran binærtall) F.eks. %00000101 står for tallet 5 i titallsystemet. Om det skal vises på skjermen så bruker maskinen en metode for å regne om til %00110101, som er kombinasjonen som står for tegnet 5. Maskinen "vet" imidltertid ikke at vi oppfatter dette som tallet 5. At tegnet 5 skal ha akkurat den kombinasjonen er en standard som er tilfeldig valgt av menneskene. 1 Lenke til kommentar
8086 Skrevet 15. juli 2015 Del Skrevet 15. juli 2015 (endret) alle metodene jeg har sett så må man også regne med titallsystemet for å få det til. Jeg lurer litt på om du kanskje har blitt litt lurt av det som kalles "decimal computers" (vanlige på 40- og 50-tallet) og binærkodet desimal-format (BCD). I BCD så bruker man fire bits på å kode hvert desimaltall*. Dette er noen sløseri å kaste fire bits på å representere 0-9 (10 varianter/kombinasjoner) siden fire bits kan representere 16 forskjellige kombinasjoner, så de gikk senere bort i fra dette til å kun bruke ekte binærkoding som er mye mer effektivt til å pakke data. Jeg vet ikke hvorfor man brukte BCD, men jeg vil anta at det var pga beleilighet. Enklere å konvertere ett og ett desimaltall i hodet, men ren gjetning. Du finner fremdeles instruksjonskoder i x86-prosessorene som kan konvertere fra BCD-format til binærformat før du jobber videre på tallene, men det er kun pga BCD-formatets historiske utbredelse. Om du faktisk leter etter hvordan man regner med binærtall vil du se at det faktisk kan være enklere enn desimaltall - i hvert fall for addisjon. Det er en litt forenklet framstilling, siden man i maskiner bruker en fiks idé kalt én-komplementsnotasjon på tallene for å gjøre enkelte operasjoner enklere å implementere, men hovedtrekkene fra eksempelet jeg lenket til gjenstår. * De som nileser på BCD ser at jeg har tatt meg noen friheter, men det er kun for å gi en enklere formidling. Endret 15. juli 2015 av 8086 1 Lenke til kommentar
KBundy Skrevet 15. juli 2015 Del Skrevet 15. juli 2015 ahh gode gamle 8086 prosessoren. Hadde helt glemt den Lenke til kommentar
Netrom00 Skrevet 15. juli 2015 Forfatter Del Skrevet 15. juli 2015 (endret) Ser at noen ikke skjønte helt hva jeg lurte på, men syenes at svaret til Emancipate og 8086 ga meg svaret på det jeg lurte på. Tror at jeg bare har misforstått litt hvordan ting fungerer i datamaskinen. Så takk ☺ Endret 15. juli 2015 av Mserkul Lenke til kommentar
Netrom00 Skrevet 15. juli 2015 Forfatter Del Skrevet 15. juli 2015 (endret) Hva er det egentlig du lurer paa? Datamaskinen vet at 11111111 er 255, men skjønner at det egentlig ikke er det du lurer paa. Som jeg har forstått så lagres et siffer som en byte. Så hvis du skriver inn et regnestykke på dataen som blir regnet ut og så skal hvises på skjermen, hvordan kan datamaskinen vite hvilket tegn den skal hvise på skjermen. For eksempel hvis svaret i et regnestykke er 1100 som er 12, hvordan greier datamaskinen å finne ut at den skal hvise ett ettall og ett totall. Endret 15. juli 2015 av Mserkul Lenke til kommentar
Zash Skrevet 15. juli 2015 Del Skrevet 15. juli 2015 Fordi den er programmert slik! Enkelt og greit, maskinen bare vet at 1100 er 12. og at 1101 er 13, osv... 1 Lenke til kommentar
Vakuum Skrevet 15. juli 2015 Del Skrevet 15. juli 2015 Hva er det egentlig du lurer paa? Datamaskinen vet at 11111111 er 255, men skjønner at det egentlig ikke er det du lurer paa. Som jeg har forstått så lagres et siffer som en byte. Så hvis du skriver inn et regnestykke på dataen som blir regnet ut og så skal hvises på skjermen, hvordan kan datamaskinen vite hvilket tegn den skal hvise på skjermen. For eksempel hvis svaret i et regnestykke er 1100 som er 12, hvordan greier datamaskinen å finne ut at den skal hvise ett ettall og ett totall. Maskinen jobber alltid med 1 og 0-tall. Eneste stedet hvor noe annet vises er på skjermen vår. Trykker du på "8" i kalkulatoren så skriver du egentlig inn 00000000 00000000 00000000 00001000. 1 Lenke til kommentar
Emancipate Skrevet 15. juli 2015 Del Skrevet 15. juli 2015 Fordi den er programmert slik! Enkelt og greit, maskinen bare vet at 1100 er 12. og at 1101 er 13, osv... Den "bare vet" det ikke. Den må bruke en programsnutt laget av et menneske, sammen med ascii-standarden, laget av et menneske, og en font med talltegn på riktig nummer i ascii-tabellen. Algoritmen ser ca sånn ut: Tall = %1100 While Tall Siffer = Tall mod %1010 ; Tall modulo 10 Tall = Tall / %1010 ; Del tallet på 10 SifferTegn = Siffer + %110000 ; Der 110000 er plassen 48 på ascii-tabellen Print(Chr(SifferTegn)) ; og chr forteller at det er et tegn fra ascii-tabellen som skal vises Wend Eneste problemet er at tallene kommer ut bakvendt. Det bruker man å rette opp etterpå. Print() slår opp i en skrifttype og viser tegnet med det nummeret på skjermen. Sifrene fra 0 til 9 har tegn nummer 48 til 57, i tilsvarende rekkefølge. 1 Lenke til kommentar
tahe Skrevet 15. juli 2015 Del Skrevet 15. juli 2015 alle metodene jeg har sett så må man også regne med titallsystemet for å få det til. Jeg lurer litt på om du kanskje har blitt litt lurt av det som kalles "decimal computers" (vanlige på 40- og 50-tallet) og binærkodet desimal-format (BCD). I BCD så bruker man fire bits på å kode hvert desimaltall*. Dette er noen sløseri å kaste fire bits på å representere 0-9 (10 varianter/kombinasjoner) siden fire bits kan representere 16 forskjellige kombinasjoner, så de gikk senere bort i fra dette til å kun bruke ekte binærkoding som er mye mer effektivt til å pakke data. Jeg vet ikke hvorfor man brukte BCD, men jeg vil anta at det var pga beleilighet. Enklere å konvertere ett og ett desimaltall i hodet, men ren gjetning. Du finner fremdeles instruksjonskoder i x86-prosessorene som kan konvertere fra BCD-format til binærformat før du jobber videre på tallene, men det er kun pga BCD-formatets historiske utbredelse. Om du faktisk leter etter hvordan man regner med binærtall vil du se at det faktisk kan være enklere enn desimaltall - i hvert fall for addisjon. Det er en litt forenklet framstilling, siden man i maskiner bruker en fiks idé kalt én-komplementsnotasjon på tallene for å gjøre enkelte operasjoner enklere å implementere, men hovedtrekkene fra eksempelet jeg lenket til gjenstår. * De som nileser på BCD ser at jeg har tatt meg noen friheter, men det er kun for å gi en enklere formidling. Dette er ikke helt korrekt. For finanssystemer er for eksempel BCD fremdeles viktig. Hvis du lurer på hvorfor, så vis meg hvordan du uttrykker desimaltallet 0,1 nøyaktig med int eller float. Lenke til kommentar
Emancipate Skrevet 15. juli 2015 Del Skrevet 15. juli 2015 Dette er ikke helt korrekt. For finanssystemer er for eksempel BCD fremdeles viktig.Hvis du lurer på hvorfor, så vis meg hvordan du uttrykker desimaltallet 0,1 nøyaktig med int eller float. Joda, det er korrekt. BCD er utdatert. Man bruker da noe som heter fixed point number, som er en int (gjerne stor) som er skalert med et fast antall plasser, slik at den alltid har f.eks. 4 plasser bak komma. Evt. "decimal", som er en type som fungerer som litt som float, bare litt annerledes for å bli i titallsystemet: https://en.wikipedia.org/wiki/Decimal128_floating-point_format Lenke til kommentar
8086 Skrevet 15. juli 2015 Del Skrevet 15. juli 2015 Dette er ikke helt korrekt. For finanssystemer er for eksempel BCD fremdeles viktig. Hvis du lurer på hvorfor, så vis meg hvordan du uttrykker desimaltallet 0,1 nøyaktig med int eller float. Som sagt, "Jeg vet ikke hvorfor man brukte BCD" ;-) Men trunkeringsfeil har jo alle tallsystemer, BCD inkludert. Forsøkt f.eks. å uttrykke 1/3 nøyaktig med binærtall eller BCD. Med tertiærsystemer er det jo simpelt Men som Emancipate nevner, så lenge man har et fast antall siffer å forholde seg til kan man løse det enkelt ved å skalere heltall, f.eks. uttrykke kronebeløp i øre. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå