Sunday 12 November 2017

Fast Punkt Representasjon Binære Alternativer


Fast Point Converter. Working med fastpunktsverdier Trenger du å oversette frakt s mellom binær og desimal raskt Vi har et verktøy som gjør det enkelt Dette verktøyet krever at JavaScript aktiveres i nettleserene dine, tilbyr en rekke datatyper for å gjøre utviklingen lettere. Dette sparer utviklere fra å måtte lage manuelle konverteringer, og tillater kompilatorer å optimalisere blandede typer beregninger intelligent. Visse Byte Craft Limited-kompilatorer kan bruke fastepunktsverdier fraksjonelle verdier mellom 0 og 1 av ulike presisjoner, og akkumulatorverdier med både små heltallskomponenter og fraksjonelle komponenter. Mens våre kompilatorer forstår fast punkt, kan det hende at andre programmer ikke gjør det ennå. Windows-kalkulator, for eksempel, vant t konvertere brøkdeler av tall Selv JavaScript-egen Nummertype utfører bare binære operasjoner på 32 heltallsbiter. Så skrev vi et verktøy som omhandler TR 18037 fast punkt fraksjonal og akkumulertyper Den konverterer mellom desimal og binære representasjoner av brøkdel og akkumulatorverdier. For å bruke den, skriv inn et desimal, hex 0x eller binært 0b nummer i toppen Velg mellom signert eller usignert, og klikk på en måldatatype. Hvis du har angitt en desimalverdi, velger du typen du vil konvertere til Resultatet vil bli polstret eller avkortet accordingly. If du skrev inn en hex eller desimal verdi, angi typen av inngangsverdien Resultatet blir desimalt. Klikk på type-knappen gjentatte ganger for å bytte mellom representasjoner. Vi har funnet dette verktøyet mest nyttige for internalisere hvordan bitposisjonene til faste punktverdier fungerer, de fleste av oss kan gjøre krefter på to i vårt hode - men bare for positive eksponenter. Merk Dette verktøyet utfører faktisk beregningene på din lokale maskin. Forskeren og ingeniørens guide til digital signal Behandling av Steven W Smith, Ph D. Chapter 28 digitale signalprosessorer. Fiksert mot flytende punkt. Digital signalbehandling kan deles i to kategorier, fast punkt og flytpunkt. Disse refererer til formatet som brukes til å lagre og man Ipulate tall i enhetene Fast punkt DSP representerer vanligvis hvert nummer med minst 16 biter, selv om en annen lengde kan brukes. For eksempel produserer Motorola en familie av faste punkt DSP som bruker 24 biter. Det er fire vanlige måter at disse 2 16 65536 mulige bitmønstre kan representere et tall I usignert heltall kan det lagrede nummer ta på heltallverdien fra 0 til 65.535 På samme måte bruker signert heltall to s komplement for å gjøre området inkludere negative tall, fra -32.768 til 32.767 Med usignert fraksjon notasjon, De 65.536 nivåene er jevnt fordelt mellom 0 og 1 Endelig tillater det signerte fraksjon formatet negative tall, like mellomrom mellom -1 og 1. I sammenligning bruker flytende punkt DSPer vanligvis minst 32 bits for å lagre hver verdi. Dette resulterer i mange flere bitmønstre enn for fast punkt, 2 32 4 294 967 296 for å være nøyaktig En nøkkelfunksjon i flytende punkt notasjon er at de representerte tallene ikke er jevnt fordelt i de fleste com mon format ANSI IEEE Std 754-1985, de største og minste tallene er henholdsvis 3 4 10 38 og 1 210-38. De representerte verdiene er ulik fordelt mellom disse to ekstremer, slik at gapet mellom noen to tall er omtrent ti millioner ganger mindre enn verdien av tallene Dette er viktig fordi det plasserer store hull mellom store tall, men små hull mellom små tall. Flytende punktnotat er nærmere omtalt i kapittel 4.Alle flytpunkt DSP kan også håndtere fastpunktstall, en nødvendighet å implementere tellere, sløyfer og signaler som kommer fra ADC og gå til DAC. Dette betyr ikke at fast punktmatematikk vil bli utført så raskt som flytpunktsoperasjoner det avhenger av den interne arkitekturen. For eksempel, SHARC DSPs er optimalisert for både flytpunkt og fastpunktsoperasjoner, og utfører dem med samme effektivitet. Av denne grunn blir SHARC-enhetene ofte referert til som 32-bit DSPs, i stedet for bare Float inngangspunkt. Figur 28-6 illustrerer de primære avvikene mellom faste og flytende punkt-DSP. I kapittel 3 understreket vi at fastpunktsaritmetikk er mye raskere enn flytpunkt i alminnelige datamaskiner. Men med DSP er hastigheten omtrent det samme, Et resultat av at maskinvaren er svært optimalisert for matematikkoperasjoner Den interne arkitekturen til et flytpunktspunkt DSP er mer komplisert enn for et fastpunktsapparat. Alle registre og databusser må være 32 bits brede i stedet for bare 16 multiplikatoren og ALU må kunne for raskt å utføre flytende punkt aritmetikk må instruksjonssettet være større slik at de kan håndtere både flytende og faste punktnumre osv. Flytpunkt 32 bit har bedre presisjon og et høyere dynamisk område enn fast punkt 16 bit I tillegg er flytpunkt programmer har ofte en kortere utviklingssyklus, siden programmereren ikke generelt trenger å bekymre seg om problemer som overløp, understrømning og avrundingsfeil. På den annen side, fikse ed point DSPs har tradisjonelt vært billigere enn flytende enheter. Ingenting endres raskere enn prisen på elektronikk, noe du finner i en bok, vil være utdatert før den skrives ut. Likevel er kostnadene en nøkkelfaktor for å forstå hvordan DSPs utvikler seg , og vi må gi deg en generell ide Når denne boken ble ferdigstilt i 1999, solgte fastpunkts-DSPs for mellom 5 og 100, mens flytpunktsinnretninger var i området fra 10 til 300 Denne forskjellen i kostnadene kan ses som et mål av den relative kompleksiteten mellom enhetene Hvis du vil finne ut hva prisene er i dag, må du se i dag. Nå la oss gjøre oppmerksom på ytelse hva kan et 32-biters flytpunktsystem gjøre som et 16-bit fastpunkt kan t Svaret på dette spørsmålet er signal-til-støy-forhold Anta at vi lagrer et nummer i et 32-biters flytpunkts-format Som tidligere nevnt er gapet mellom dette nummeret og den tilstøtende naboen omtrent en ti millioner av verdien av tallet Til s revet tallet, må det være rundt opp eller ned med maksimalt halvparten av gapets størrelse. Med andre ord, hver gang vi lagrer et tall i flytende punktnotasjon, legger vi til lyd til signalet. Det samme skjer når et tall lagres som en 16-bit fastpunktsverdi, bortsett fra at den ekstra støyen er mye verre. Dette skyldes at gapene mellom tilgrensende tall er mye større. For eksempel, antar vi at vi lagrer nummeret 10.000 som et signert heltall som går fra -32.768 til 32.767 gap mellom tall er en ti tusen av verdien av nummeret vi lagrer. Hvis vi ønsker å lagre nummeret 1000, er gapet mellom tall bare en tusen av verdien. Noe i signaler er vanligvis representert ved standardavviket Dette ble diskutert i detalj i kapittel 2 For her er det viktige faktum at standardavviket til denne kvantiseringsstøyen er omtrent en tredjedel av gapstørrelsen. Dette betyr at signal-støyforholdet for lagring av et flytpunktnummer dreier seg om 30 millioner til en, mens f eller et fast punktnummer er det bare om ti tusen til ett. Med andre ord har flytpunktet omtrent 30.000 ganger mindre kvantiseringsstøy enn det faste punktet. Dette gir en viktig måte at DSPer er forskjellige fra tradisjonelle mikroprosessorer. Anta at vi implementerer et FIR-filter i fast punkt For å gjøre dette, går vi gjennom hver koeffisient, multipliserer den med riktig prøve fra inngangssignalet, og legger produktet til en akkumulator. Her er problemet I tradisjonelle mikroprosessorer er denne akkumulatoren bare en annen 16 bit fastpunktsvariabel Til unngå overløp, må vi måle verdiene som legges til, og tilsvarer tilsvarende kvantiseringsstøy på hvert trinn. I verste fall vil denne kvantiseringsstøyen bare legge til, og senking av signal-støyforholdet til systemet. For eksempel i en 500-koeffisient-FIR-filteret, kan støyen på hver utgangssprøve være 500 ganger støyen på hver inngangsprøve. Signal-støyforholdet mellom ti tusen og en har falt til en skummel tjue til en Selv om dette er et ekstreme tilfelle illustrerer det hovedpunktet når mange operasjoner utføres på hver prøve, det er dårlig, virkelig dårlig. Se kapittel 3 for flere detaljer. DSPs håndterer dette problemet ved å bruke en utvidet presisjonsakkumulator Dette er en spesialregister som har 2-3 ganger så mange biter som de andre minnestedene. I en 16 bit DSP kan den ha 32 til 40 biter, mens den i SHARC DSP inneholder 80 bits for fast punktbruk. Dette utvidede området eliminerer praktisk talt avrullingsstøy mens akkumuleringen pågår Den eneste avrundingsfeilen som oppstår, er når akkumulatoren skaleres og lagres i 16-bitsminnet. Denne strategien fungerer veldig bra, selv om det begrenser hvordan noen algoritmer må utføres. Til sammenligning, flytpunkt har så lav kvantiseringsstøy at disse teknikkene vanligvis ikke er nødvendige. I tillegg til å ha lavere kvantiseringsstøy, er flytpunktsystemer også enklere å utvikle algoritmer for. De fleste DSP-teknikker er basert på re peated multiplikasjoner og tillegg I fast punkt må muligheten for overløp eller understrøm vurderes etter hver operasjon. Programmereren må kontinuerlig forstå amplituden av tallene, hvordan kvantiseringsfeilene samler seg og hvilken skalering som skal skje. Til sammenligning , disse problemene oppstår ikke i flytende punkt tallene tar seg av seg selv, unntatt i sjeldne tilfeller. For å gi deg en bedre forståelse av dette problemet, viser Fig. 28-7 en tabell fra SHARC brukerhåndbok. Dette beskriver måtene som multiplikasjon kan være utføres for både faste og flytende punktformater. Se først på hvordan flytende poengstall kan multipliseres. Det er bare en vei That. is, Fn Fx Fy, hvor Fn, Fx og Fy er et av de 16 datalegistene. Det kunne ikke vær enklere I sammenligning, se på alle mulige kommandoer for fast punktmultiplikasjon. Dette er de mange alternativene som trengs for å effektivt håndtere problemene med avrunding, skalering og format. I figur 28-7, Rn, Rx og Ry refererer til noen av de 16 dataregistrene, og MRF og MRB er 80 bits akkumulatorer. De vertikale linjene indikerer valg. For eksempel betyr øverst til venstre oppføring i denne tabellen at alle følgende er gyldige kommandoer Rn Rx Ry , MRF Rx Ry og MRB Rx Ry Med andre ord, verdien av noen to registre kan multipliseres og plasseres i et annet register, eller i en av de utvidede presisjonsakkumulatorene. Denne tabellen viser også at tallene kan være signerte eller usignerte S eller U, og kan være brøkdel eller heltall F eller I. RND - og SAT-alternativene er måter å kontrollere avrunding og registrere overflow. Det finnes andre detaljer og alternativer i tabellen, men de er ikke viktige for vår nåværende diskusjon. Den viktige ideen er at fast punktprogrammereren må forstå dusinvis av måter å utføre den svært grunnleggende oppgaven med multiplikasjon I motsetning kan flytpunkts programmereren bruke sin tid på å konsentrere seg om algoritmen. Gi disse avvikene mellom fast og flytende punkt, hvordan velger du hva du skal bruke Her er noen ting du bør vurdere Først ser du hvor mange biter som brukes i ADC og DAC I mange applikasjoner er 12-14 biter per prøve crossover for bruk av fast versus flytende punkt. For eksempel fjernsyn og andre videosignaler bruker vanligvis 8 bit ADC og DAC, og presisjonen av det faste punktet er akseptabelt. I sammenligning kan profesjonelle lydapplikasjoner prøve med så høyt som 20 eller 24 bits, og trenger absolutt flytende punkt for å fange det store dynamiske området. Den neste tingen å se på er kompleksiteten til algoritmen som vil bli kjørt Hvis det er relativt enkelt, tenk fast punkt hvis det er mer komplisert, tenk flytpunkt. For eksempel krever FIR-filtrering og andre operasjoner i tidsdomene bare noen få dusin linjer med kode, noe som gjør dem egnet til fast punkt I kontrast er frekvensdomenalgoritmer, som spektralanalyse og FFT-konvolusjon, meget detaljerte og kan være mye vanskeligere å programmere mens de kan være wri I tide i fast punkt vil utviklings tiden bli sterkt redusert dersom flytende punkt brukes. Sist tenk på pengene hvor viktig kostnaden for produktet er, og hvor viktig kostnaden for utviklingen er. Når fast punkt er valgt, koster kostnaden av produktet vil bli redusert, men utviklingsprisen vil trolig være høyere på grunn av de vanskeligere algoritmene. På motsatt måte vil flytpunktet generelt resultere i en raskere og billigere utviklingssyklus, men et dyrere sluttprodukt. Figur 28-8 viser noen av de store trender i DSPs Figur a illustrerer virkningen som Digital Signal Processors har hatt på det innebygde markedet. Dette er applikasjoner som bruker en mikroprosessor for direkte å betjene og kontrollere noe større system, for eksempel en mobiltelefon, mikrobølgeovn eller bil instrumentdisplaypanel Navnet microcontroller brukes ofte til å referere til disse enhetene, for å skille dem fra mikroprosessorene som brukes i personlige datamaskiner. Som vist i a, abo ut 38 av innebygde designere har allerede begynt å bruke DSPs, og en annen 49 vurderer bryteren. DSPs høye gjennomstrømning og beregningsevne gjør dem ofte til et ideelt valg for innebygde design. Som vist i b, bruker omtrent to så mange ingeniører for øyeblikket fast punkt som bruk flytende punkt DSPs Dette avhenger imidlertid sterkt av søknaden Fast punkt er mer populært i konkurrerende forbrukerprodukter der kostnaden for elektronikken må holdes veldig lav Et godt eksempel på dette er mobiltelefoner Når du konkurrerer om å selge millioner av Produktet ditt, en kostnadsforskjell på bare noen få dollar, kan være forskjellen mellom suksess og fiasko. Til sammenligning er flytpunktet vanligere når større ytelse er nødvendig, og kostnaden er ikke viktig For. instance, anta at du designer et medisinsk bildebehandlingssystem, en slik datatomografisk skanner Bare noen få hundre av modellen vil bli solgt, til en pris på flere hundre tusen dollar hver For denne appen lisensiering, kostnaden for DSP er ubetydelig, men ytelsen er kritisk. Til tross for at det største antallet fastepunkt DSP som brukes, er flytende punktmarkedet det raskest voksende segmentet. Som vist i c, er over halvparten av ingeniører med 16 - bit enheter planlegger å migrere til flytpunktet på et tidspunkt i nær fremtid. Før du forlater dette emnet, bør vi reemphasize at flytpunkt og fast punkt vanligvis bruker 32 bits og 16 bits, henholdsvis, men ikke alltid For eksempel SHARC-familien kan representere tall i 32-biters fast punkt, en modus som er vanlig i digitale lydapplikasjoner Dette gjør at 2 32-kvantiseringsnivåene er jevnt fordelt over et relativt lite område, si mellom -1 og 1 I sammenligning plasserer flytpunktpunkt 2 32 kvantiseringsnivåer logaritmisk over et stort utvalg, vanligvis 3 4 10 38 Dette gir 32-biters fast punkt bedre presisjon, det vil si at kvantiseringsfeilen på en enkelt prøve blir lavere. 32-biters flytpunkt er imidlertid høyere dynamisk rekkevidde som betyr at det er en større forskjell mellom det største tallet og det minste tallet som kan representeres. Fiksjonsposisjoner binære alternativer. I motsetning til flytende punkteksponenter oppdager en fastpunktseksponent aldri opp i maskinvaren, så fast - punkt eksponenter er ikke begrenset av et begrenset antall biter. To komplement er den foretrukne representasjonen av signerte fastpunktstall og er den eneste representasjonen som brukes av Fixed-Point Designer-programvare. Fast punktrepresentasjon binære alternativer Bevegelse Online på Forex Trading i Zambia Fordi vi kan definere hvor vi vil at det faste binære punktet skal ligge, kan presisjonen Formelen for beregning av heltallrepresentasjonen X Negasjon ved hjelp av to s komplement består av en liten inversjonsoversettelse i et s komplement etterfulgt av tillegg av en. Det er vanligvis programvare som bestemmer det binære punktet Disse ekstra nullene endres aldri til de, men de viser seg ikke i maskinvaren. de logiske kretsene har ingen kjennskap til en skaleringsfaktor. De utfører signert eller usignert fastpunkt binær algebra som om binærpunktet er til høyre for å begrense det binære punktet til å være sammenhengende med fraksjonen er unødvendig, kan brøklengden være negativ eller større enn ordlengden Fast punktrepresentasjon binære alternativer Børsjobber Omfordeling og bruk i kilde - og binære skjemaer, med Return a String som inneholder denne tallverdien representert i desimal fastpunktsnotasjon med Deb betyr et binært arkiv der deb-src betyr et kildearkiv Slik lagrer du oppdateringsfeil Feil oppføring eller feilformat Med Fast-Point Designer-programvaren kan du utforske forholdet mellom datatyper, rekkevidde, presisjon og kvantiseringsfeil i modelleringen av dynamiske digitale systemer, fordi vi kan definere hvor vi Ønsker det faste binære punktet å ligge, kan presisjonen Formelen for beregning av heltallrepresentasjonen X Overvei en signert verdi med en ordlengde på 8, en brøklengde på 10 og en lagret heltallverdi på 5 binærverdi Datamaskinvare representerer vanligvis negasjonen av et binært fastpunktnummer på tre forskjellige måter signaturstørrelse, ett komplement og to s komplement. For eksempel er de to komplementene til 000101 111011 Bensinstasjoner med fast punkt-representasjon Denne skaleringsmodusen er basert på binærpunkt-bare. Mange penger Gjør online kasinoer omfordeling og bruk i kilde - og binære skjemaer, med Return a String som inneholder dette Nummerverdi representert i desimal fastpunkts notasjon med Standard 754-1985 for binær flytende punkt aritmetikk referert til ganske enkelt som IEEE Standard 754 gjennom denne veiledningen og støtter singler og dobler. Comment Gagner De L Argent Sur Sty Sans Investissement La Runion Fordi vi kan definere hvor vi vil at det faste binære punktet skal ligge, kan presisjonen Formelen for beregning av integerrepresentasjonen X Når du velger en datatype, må du ha ulemper Disse faktorene Disse valgene avhenger av ditt spesifikke program, datamaskinarkitekturen som brukes, og utviklingsprisen, blant annet. Når du utfører grunnleggende mattefunksjoner som tillegg eller subtraksjon, bruker maskinvaren de samme logikkretsene uavhengig av verdien av skalaen faktor De utfører signert eller usignert fast punkt binært algebra som om det binære punktet er til høyre for å begrense det binære punktet til å være sammenhengende med fraksjonen er unødvendig, kan brøklengden være negativ eller større enn ordlengden Fast punktrepresentasjon binær Alternativer trading strategier pris handling logisk metode For eksempel et ord bestående av tre usignerte biter er vanligvis representert i vitenskapelig notasjon på en av følgende måter Fast punkt visning binære alternativer Enten en fast punkt verdi er signert eller usignert blir vanligvis ikke kodet eksplisitt innenfor det binære ordet som er, det er ingen tegnbit Verdien av whiteSpace er fast til For eksamp le, 0FB7 er en hex-koding for 16-biters heltall 4023 hvis binære representasjon er 111110110111 Standard 754-1985 for binær flytende punkt-aritmetikk referert til som IEEE Standard 754 gjennom denne guiden og støtter singler og doubler. Det binære punktet er midlene ved hvilke fastpunktstall er skalert Ferdigpunktsrepresentasjon binære alternativer Med denne modusen kan du skalere en konstant vektor eller matrise slik at et felles binært punkt blir funnet basert på den beste presisjonen for den største verdien i vektoren eller for Androids I stedet er skiltinformasjonen implisitt definert i datamaskinarkitekturen. Slik kobler du en kredittskulder til Forex Konstant skalering for best presisjon er bare tilgjengelig for fastpunktdatatyper med uspesifisert skalering. Dobbel Binary Converter. Ønsker å konvertere til binært flytende punkt Prøv min flytende punktomformer. Ønsker å beregne med binære tall Prøv min binære kalkulator. Ønsker å konvertere tall mellom vilkårlig baser Prøv min base converter. Abimal Decimal Binær Converter. Dette er en desimal til binær og binær til desimal omformer Det er forskjellig fra de fleste desimal binære omformere, som Google kalkulator eller Windows kalkulator, fordi. Det kan konvertere brøkdel og heltall verdier. Det kan konvertere veldig store og svært små tall opptil hundrevis av sifre. Decimale tall konverteres til rene binære tall, ikke til datamaskin nummerformater som to s komplement eller IEEE flytende punkt binary. Conversion er implementert med arbitrær-presisjon aritmetikk som gir omformeren sin evne til å konvertere tall som er større enn de som kan passe i standard datamaskinordstørrelser som 32 eller 64 bits. How å bruke den decimale binære konverteren. Skriv inn et positivt eller negativt tall uten kommaer eller mellomrom , ikke uttrykt som en brøk - eller aritmetisk beregning, og ikke i vitenskapelig notasjon. Brøkverdier er angitt med et radix-punkt, ikke. Endre tallet av biter du vil vises i binærresultatet, hvis forskjellig fra standardverdien gjelder bare når du konverterer en brøkdel av desimalverdier. Klikk Konverter for å konvertere. Klikk på Fjern for å tilbakestille skjemaet og starte fra bunnen av. Hvis du vil konvertere et annet tall, skriv bare over det opprinnelige nummeret og klikk på Konverter, det er ikke nødvendig å klikke Fjern først. I tillegg til det konverterte resultatet vises antall siffer i både de opprinnelige og konverterte tallene. For eksempel, når du konverterer desimal 43 125 til binær 101011 001, sifrene vises som 2 3 til 6 3 Dette betyr at desimalinngangen har 2 sifre i sin heltalldel og 3 siffer i sin deldel, og binærutgangen har 6 siffer i sin heltalldel og 3 siffer i sin deldel. desimalverdier som er dyadiske, konverteres til endelige fraksjonelle binære verdier og vises med full presisjon Fraksjonelle desimalverdier som ikke er dyadiske, konverteres til uendelige repeterende brøkdelverdier, som er trunkat ed ikke avrundet til spesifisert antall biter I dette tilfellet legges en ellipsis til slutten av det binære tallet, og antallet av brøkdelstall angis som uendelig med symbolet. Eksploreringsegenskaper av decimal binær konvertering. Omformeren er satt opp slik at du kan utforske egenskaper av desimal til binær og binær til desimalomregning Du kan kopiere utdataene fra desimal til binær omformer til inngangen til binær til desimalomformer og sammenligne resultatene, pass på at du ikke kopierer delen av nummeret Den binære omformeren vil markere den som ugyldig. En desimal heltall eller dyadisk brøkdelverdi konvertert til binær og deretter tilbake til desimal samsvarer med den opprinnelige desimalverdien, en ikke-dyadisk verdi konverterer bare tilbake til en tilnærming av den opprinnelige desimalverdien. For eksempel 0 1 i desimalt til 20 biter er 0 00011001100110011001 i binær 0 00011001100110011001 i binær er 0 09999942779541015625 i desimalt Økende antall biter av presisjon vil gjøre konverterte nå mber nærmere originalen. Du kan studere hvordan antall siffer er forskjellig mellom desimaltall og binære representasjoner av et tall Store binære heltall har om log 2 10, eller omtrent 3 3, ganger så mange sifre som deres desimalekvivalenter Dyadiske desimalfraksjoner har samme antall sifre som deres binære ekvivalenter Ikke-dyadiske desimalverdier, som allerede nevnt, har uendelige binære ekvivalenter. Andre vilkårlig-presisjon, brøkdelverdiomformere. En veiledning om datarrepresentasjon. Integere, flytende punktnumre og tegn. Number Systems. Human vesener bruker desimalbasis 10 og duodecimal base 12 nummer systemer for telling og målinger sannsynligvis fordi vi har 10 fingre og to store tær. Datamaskiner bruker binært base 2 nummer system, da de er laget av binære digitale komponenter kjent som transistorer som opererer i to stater - på og av I databehandling bruker vi også heksadesimale base 16 eller oktalbasen 8 nummer systemer, som en kompakt form for å representere binære tall. Decimal Base 10 Number System. Decimal nummer system har ti symboler 0, 1, 2, 3, 4, 5, 6, 7, 8 og 9, kalt siffer s Det bruker posisjonsnotasjon Det er den minst signifikante sifferhøyden siffer er av størrelsesorden 10 0 enheter eller de andre, det andre høyest siffer er av størrelsesorden 10 1 tiere, det tredje høyest tall er i størrelsesorden 10 2 hundrevis osv. For eksempel. Vi skal betegne et desimalnummer med et valgfritt suffiks D hvis tvetydighet oppstår. Binary Base 2 Number System. Binært talesystem har to symboler 0 og 1, kalt biter. Det er også en posisjonsnotasjon for eksempel. Vi skal betegne et binært tall med et suffiks B Noen programmeringsspråk angir binære tall med prefikset 0b f. eks. 0b1001000 eller prefikset b med bitene sitert egb 10001111. Et binært tall kalles litt Åtte biter kalles en byte hvorfor 8-bits enhet Sannsynligvis fordi 8 2 3.Hexadecimal Base 16 Nummer System. Hexadecimaltallsystem bruker 16 symboler 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E og F, kalt hex hex dig dens Det er en posisjonsnotasjon for eksempel. Vi skal betegne et heksadesimalt tall kort sagt, heks med et suffiks H Noen programmeringsspråk angir hex-tall med prefikset 0x f. eks. 0x1A3C5F, eller prefikset x med heksesifret citerte egx C3A4D98B. Hver heksadesimale siffer er også kalt et heksesiffer De fleste programmeringsspråk aksepterer små bokstaver a til f, så vel som versaler A til Fputers bruker binært system i deres interne operasjoner, da de er bygget fra binære digitale elektroniske komponenter. Det er imidlertid tungvint å skrive eller lese en lang rekke binære biter. Feilutsatt Hexadecimalt system brukes som kompakt form eller stenografi for binære biter. Heksesifret er ekvivalent med 4 binære biter, det vil si stenografi for 4 biter, som følger. Bytt hvert heksesiffer med de 4 tilsvarende biter, for eksempler. Konvertering fra Binary til Hexadecimal. Start fra den høyeste bit minst signifikante bit, erstatt hver gruppe av 4 biter med tilsvarende hex-sifferpute de venstre biter med null hvis nødvendig, for eksempel s. It er viktig å merke seg at heksadesimale nummer gir en kompakt form eller stenografi for å representere binære biter. Konvertering fra Base r til Decimal Base 10.Given en - digit base r-nummer dn-1 dn-2 dn-3 d3 d2 d1 d0 base r, desimalekvivalenten er gitt ved. Konvertering fra Desimal Base 10 til Base r. Bruk gjentatt delingsrest For eksempel. Ovennevnte fremgangsmåte er faktisk anvendelig for konvertering mellom noen 2 basissystemer. For eksempel. Generell konvertering mellom 2 basissystemer med fraksjonal Del. Separere integral - og fraksjonelle deler. For den integrerte delen, del av målradix repeterbart og samle ramainderen i omvendt rekkefølge. For den delte delen, multipliserer delingsdelen av målradix repeterbart og samler den integrerte delen i samme rekkefølge. Øvelser Antall systemkonvertering. Konverter følgende desimaltall i binære og heksadesimale tall. Konverter følgende binære tall til heksadesimale og desimaltall. Konverter følgende heks adekimale tall i binære og desimaltall. Konverter følgende desimaltall til binær ekvivalent. Brukere Du kan bruke Windows Kalkulatoren til å utføre nummer systemkonvertering, ved å sette den til vitenskapelig modus Kjør kalk Velg Vis-meny Velg Programmerer eller Vitenskapelig modus.1101100B 10010111100000000B 10001100101000B 6CH 12F0H 2328H.218H 80H AAAH 536D 128D 2730D.10101011110011011110B 1001000110100B 100000001111B 703710D 4660D 2063Dputer Memory Data Representationputer bruker et fast antall biter for å representere et stykke data, som kan være et tall, et tegn eller andre A n-bit lagringsplass kan representere opptil 2 n forskjellige enheter For eksempel kan en 3-bits minneplass inneholde en av disse åtte binære mønstrene 000 001 010 011 100 101 110 eller 111 Derfor kan den representere 8 forskjellige enheter Du kan bruke dem å representere tallene 0 til 7, tallene 8881 til 8888, tegn A til H eller opptil 8 typer frukt som apple, oransje, banan eller opptil 8 slags dyr som f. eks. løve, tiger etc. Innenfor eksempel kan du representere i 8-bit, 16-bit, 32-bit eller 64-bit Du velger som programmerer en passende bitlengde for hele tallene ditt. pålegge rekkevidde av heltall som kan representeres. I tillegg til bitlengden kan et heltall bli representert i forskjellige representasjonsordninger, for eksempel usignerte vs signerte heltal. Et 8-bit usignert heltall har et område på 0 til 255, mens en 8- bit underskrevet heltall har et område på -128 til 127 - begge representerer 256 forskjellige tall. Det er viktig å merke seg at en datamaskinminneplassering bare lagrer et binært mønster. Det er helt opp til deg som programmerer å bestemme hvordan disse mønstrene skal tolkes For eksempel kan 8-bits binær mønster 0100 0001B tolkes som et usignert heltall 65 eller et ASCII-tegn A eller noen hemmelig informasjon kun kjent for deg Med andre ord må du først bestemme hvordan du skal representere et stykke av data i et binært mønster før de binære mønstrene fornuftig Tolkningen av binær mønster kalles datarrepresentasjon eller koding Videre er det viktig at datarepresentasjonsordninger er avtalt av alle partene, det vil si at industristandarder må formuleres og umiddelbart følges. Når du har bestemt deg for datarrepresentasjonen ordningen, visse begrensninger, spesielt presisjon og rekkevidde vil bli pålagt. Derfor er det viktig å forstå datarrepresentasjon for å skrive korrekte og høypresterende programmer. Rosette Stone og dekryptering av egyptiske Hieroglyphs. Egyptian hieroglyphs next to left were brukt av de gamle egypterne siden 4000BC Dessverre siden 500AD kunne ingen lenger lese de gamle egyptiske hieroglyfer, til gjenoppdagelsen av Rosette Stone i 1799 av Napoleons tropp under Napoleons Egyptiske invasjon nær byen Rashid Rosetta i Nile Delta. Rosetta Stone venstre er innskrevet med et dekret i 196 BC på vegne av King Ptolemy V Dekretet vises i tre scri viser den øvre teksten er gamle egyptiske hieroglyfer midtpartiet Demotisk skript og den laveste antikkgresk Fordi det presenterer i det vesentlige samme tekst i alle tre skriptene, og gammelgresk fortsatt kunne forstås, ga den nøkkelen til dechifrering av de egyptiske hieroglyfer. Den moralske historien er, med mindre du kjenner kodingsordningen, er det ingen måte at du kan dekode dataene. Reference og bilder Wikipedia. Integer Representation. Integers er hele tall eller faste punktnumre med radix-punktet fast etter minst - betydende bit De er kontrast til ekte tall eller flytende poengstall hvor posisjonen til radixpunktet varierer. Det er viktig å merke seg at heltall og flytpunktstall behandles forskjellig i datamaskiner. De har forskjellig representasjon og behandles forskjellig, f. eks. flytende - punkttalene behandles i en såkalt flytende punktprosessor Flytepunktstall vil bli diskutert laterputers bruker et fast antall biter for å representere et heltall De vanlig brukte bitlengder for heltall er 8-bit, 16-bit, 32-bit eller 64-bit. I tillegg til bitlengder er det to representasjonsordninger for heltall. Uendesignerte helheter kan representere null og positive heltal. Signerte helheter kan representere null, positive og negative heltall Tre representasjonsordninger ble foreslått for signerte heltal. Signal-størrelsesrepresentasjon.1 s Komplett representasjon.2 s Komplementere representasjon. Du må som programmerer bestemme bit - lengde - og representasjonsplan for hele tallene dine, avhengig av søknadens krav. Forutsatt at du trenger en teller for å telle en liten mengde fra 0 til 200, kan du velge 8-bits usignert heltallskjema, da det ikke er involvert negativt tal. - bit Unsigned Integers. Unsigned heltall kan representere null og positivt heltall, men ikke negative heltall. Verdien av et usignert heltall tolkes som størrelsen på det underliggende binære mønsteret. Eksempel 1 Anta at n 8 og binærmønsteret er 0100 0001B verdien av dette usignerte heltallet er 1 2 0 1 2 6 65D. Eksempel 2 Anta at n 16 og binærmønsteret er 0001 0000 0000 1000B verdien av dette usignerte heltallet er 1 2 3 1 2 12 4104D. Eksempel 3 Anta at n 16 og binærmønsteret er 0000 0000 0000 0000B verdien av dette usignerte heltallet er 0. Et n-bitt mønster kan representere 2 n forskjellige heltall Et n-bit usignert heltall kan representere heltall fra 0 til 2 n -1 som tabulert nedenfor. Signerte heltal. Signerte heltall kan representere null, positive heltall, samt negative heltall Tre representasjonsordninger er tilgjengelige for signerte heltall. Sign-Magnitude representation.1 s Komplement representasjon.2 s Komplement representasjon. I alle de ovennevnte tre ordene kalles den mest signifikante biten msb tegnbiten. Tegnebiten brukes til å representere tegnet til heltallet - med 0 for positive heltall og 1 for negative heltall. Fulltalets størrelse er imidlertid , er tolk redigert forskjellig i forskjellige ordninger. n-bit Sign-integer i Sign-Magnitude Representation. In sign-magnitude representasjon. Den mest signifikante biten msb er tegnebiten med verdi på 0 som representerer positivt heltall og 1 representerer negativt heltall. De gjenværende n - 1 biter representerer absoluttverdiens absolutte verdi. Den absolutte verdien av heltalet er tolket som størrelsen på n -1-bit binær mønster. Eksempel 1 Anta at n 8 og binær representasjon er 0 100 0001B Tegnbit er 0 positiv Absolutt verdi er 100 0001B 65D Derfor er heltalet 65D. Eksempel 2 Anta at n 8 og binær representasjon er 1 000 0001B Tegnbit er 1 negativ Absolutt verdi er 000 0001B 1D Derfor er heltallet -1D. Eksempel 3 Anta at n 8 og binær representasjon er 0 000 0000B Sign bit er 0 positiv Absolutt verdi er 000 0000B 0D Derfor er heltallet 0D. Eksempel 4 Anta at n 8 og binær representasjon er 1 000 0000B Sign bit er 1 negativ Absolutt verdi er 000 0000B 0D Hence, the integer is -0D. The drawbacks of sign-magnitude representation are. There are two representations 0000 0000B and 1000 0000B for the number zero, which could lead to inefficiency and confusion. Positive and negative integers need to be processed separately. n - bit Sign Integers in 1 s Complement Representation. In 1 s complement representation. Again, the most significant bit msb is the sign bit with value of 0 representing positive integers and 1 representing negative integers. The remaining n -1 bits represents the magnitude of the integer, as follows. for positive integers, the absolute value of the integer is equal to the magnitude of the n -1 - bit binary pattern. for negative integers, the absolute value of the integer is equal to the magnitude of the complement inverse of the n -1 - bit binary pattern hence called 1 s complement. Example 1 Suppose that n 8 and the binary representation 0 100 0001B Sign bit is 0 positive Absolute value is 100 0001B 65D Hence, the integer i s 65D. Example 2 Suppose that n 8 and the binary representation 1 000 0001B Sign bit is 1 negative Absolute value is the complement of 000 0001B i e 111 1110B 126D Hence, the integer is -126D. Example 3 Suppose that n 8 and the binary representation 0 000 0000B Sign bit is 0 positive Absolute value is 000 0000B 0D Hence, the integer is 0D. Example 4 Suppose that n 8 and the binary representation 1 111 1111B Sign bit is 1 negative Absolute value is the complement of 111 1111B i e 000 0000B 0D Hence, the integer is -0D. Again, the drawbacks are. There are two representations 0000 0000B and 1111 1111B for zero. The positive integers and negative integers need to be processed separately. n - bit Sign Integers in 2 s Complement Representation. In 2 s complement representation. Again, the most significant bit msb is the sign bit with value of 0 representing positive integers and 1 representing negative integers. The remaining n -1 bits represents the magnitude of the integer, as follows. for positive in tegers, the absolute value of the integer is equal to the magnitude of the n -1 - bit binary pattern. for negative integers, the absolute value of the integer is equal to the magnitude of the complement of the n -1 - bit binary pattern plus one hence called 2 s complement. Example 1 Suppose that n 8 and the binary representation 0 100 0001B Sign bit is 0 positive Absolute value is 100 0001B 65D Hence, the integer is 65D. Example 2 Suppose that n 8 and the binary representation 1 000 0001B Sign bit is 1 negative Absolute value is the complement of 000 0001B plus 1 i e 111 1110B 1B 127D Hence, the integer is -127D. Example 3 Suppose that n 8 and the binary representation 0 000 0000B Sign bit is 0 positive Absolute value is 000 0000B 0D Hence, the integer is 0D. Example 4 Suppose that n 8 and the binary representation 1 111 1111B Sign bit is 1 negative Absolute value is the complement of 111 1111B plus 1 i e 000 0000B 1B 1D Hence, the integer is -1Dputers use 2 s Complement Representation for Si gned Integers. We have discussed three representations for signed integers signed-magnitude, 1 s complement and 2 s complement Computers use 2 s complement in representing signed integers This is because. There is only one representation for the number zero in 2 s complement, instead of two representations in sign-magnitude and 1 s complement. Positive and negative integers can be treated together in addition and subtraction Subtraction can be carried out using the addition logic. Example 1 Addition of Two Positive Integers Suppose that n 8, 65D 5D 70D. Example 2 Subtraction is treated as Addition of a Positive and a Negative Integers Suppose that n 8, 5D - 5D 65D -5D 60D. Example 3 Addition of Two Negative Integers Suppose that n 8, -65D - 5D -65D -5D -70D. Because of the fixed precision i e fixed number of bits , an n - bit 2 s complement signed integer has a certain range For example, for n 8 the range of 2 s complement signed integers is -128 to 127 During addition and subtraction , it is important to check whether the result exceeds this range, in other words, whether overflow or underflow has occurred. Example 4 Overflow Suppose that n 8, 127D 2D 129D overflow - beyond the range. Example 5 Underflow Suppose that n 8, -125D - 5D -130D underflow - below the range. The following diagram explains how the 2 s complement works By re-arranging the number line, values from -128 to 127 are represented contiguously by ignoring the carry bit. Range of n - bit 2 s Complement Signed Integers. An n - bit 2 s complement signed integer can represent integers from -2 n -1 to 2 n -1 -1 as tabulated Take note that the scheme can represent all the integers within the range, without any gap In other words, there is no missing integers within the supported range. 2 63 -1 9,223,372,036,854,775,807 18 digits. Decoding 2 s Complement Numbers. Check the sign bit denoted as S. If S 0 the number is positive and its absolute value is the binary value of the remaining n -1 bits. If S 1 the number is negative you could invert the n -1 bits and plus 1 to get the absolute value of negative number Alternatively, you could scan the remaining n -1 bits from the right least-significant bit Look for the first occurrence of 1 Flip all the bits to the left of that first occurrence of 1 The flipped pattern gives the absolute value For example. Big Endian vs Little Endian. Modern computers store one byte of data in each memory address or location, i e byte addressable memory An 32-bit integer is, therefore, stored in 4 memory addresses. The term Endian refers to the order of storing bytes in computer memory In Big Endian scheme, the most significant byte is stored first in the lowest memory address or big in first , while Little Endian stores the least significant bytes in the lowest memory address. For example, the 32-bit integer 12345678H 2215053170 10 is stored as 12H 34H 56H 78H in big endian and 78H 56H 34H 12H in little endian An 16-bit integer 00H 01H is interpreted as 0001H in big endian, and 0100H as little endian. Exercise Integer Representation. What are the ranges of 8-bit, 16-bit, 32-bit and 64-bit integer, in unsigned and signed representation. Give the value of 88 0 1 127 and 255 in 8-bit unsigned representation. Give the value of 88 -88 -1 0 1 -128 and 127 in 8-bit 2 s complement signed representation. Give the value of 88 -88 -1 0 1 -127 and 127 in 8-bit sign-magnitude representation. Give the value of 88 -88 -1 0 1 -127 and 127 in 8-bit 1 s complement representation. The range of unsigned n - bit integers is 0, 2 n - 1 The range of n - bit 2 s complement signed integer is -2 n-1 , 2 n-1 -1.88 0101 1000 0 0000 0000 1 0000 0001 127 0111 1111 255 1111 1111. 88 0101 1000 -88 1010 1000 -1 1111 1111 0 0000 0000 1 0000 0001 -128 1000 0000 127 0111 11 11. 88 0101 1000 -88 1101 1000 -1 1000 0001 0 0000 0000 or 1000 0000 1 0000 0001 -127 1111 1111 127 0111 1111. 88 0101 1000 -88 1010 0111 -1 1111 1110 0 0000 0000 or 1111 1111 1 0000 0001 -127 1000 0000 127 0111 1111.Floating-Point Number Representation. A floating-point number or real number can represent a very large 1 23 10 88 or a very small 1 23 10 -88 value It could also represent very large negative number -1 23 10 88 and very small negative number -1 23 10 88 , as well as zero, as illustrated. A floating-point number is typically expressed in the scientific notation, with a fraction F , and an exponent E of a certain radix r , in the form of F r E Decimal numbers use radix of 10 F 10 E while binary numbers use radix of 2 F 2 E. Representation of floating point number is not unique For example, the number 55 66 can be represented as 5 566 10 1 0 5566 10 2 0 05566 10 3 and so on The fractional part can be normalized In the normalized form, there is only a single non-zero digit befo re the radix point For example, decimal number 123 4567 can be normalized as 1 234567 10 2 binary number 1010 1011B can be normalized as 1 0101011B 2 3.It is important to note that floating-point numbers suffer from loss of precision when represented with a fixed number of bits e g 32-bit or 64-bit This is because there are infinite number of real numbers even within a small range of says 0 0 to 0 1 On the other hand, a n - bit binary pattern can represent a finite 2 n distinct numbers Hence, not all the real numbers can be represented The nearest approximation will be used instead, resulted in loss of accuracy. It is also important to note that floating number arithmetic is very much less efficient than integer arithmetic It could be speed up with a so-called dedicated floating-point co-processor Hence, use integers if your application does not require floating-point numbers. In computers, floating-point numbers are represented in scientific notation of fraction F and exponent E with a radix of 2, in the form of F 2 E Both E and F can be positive as well as negative Modern computers adopt IEEE 754 standard for representing floating-point numbers There are two representation schemes 32-bit single-precision and 64-bit double-precision. IEEE-754 32-bit Single-Precision Floating-Point Numbers. In 32-bit single-precision floating-point representation. The most significant bit is the sign bit S , with 0 for positive numbers and 1 for negative numbers. The following 8 bits represent exponent E. The remaining 23 bits represents fraction F. Normalized Form. Let s illustrate with an example, suppose that the 32-bit pattern is 1 1000 0001 011 0000 0000 0000 0000 0000 with. F 011 0000 0000 0000 0000 0000.In the normalized form the actual fraction is normalized with an implicit leading 1 in the form of 1 F In this example, the actual fraction is 1 011 0000 0000 0000 0000 0000 1 1 2 -2 1 2 -3 1 375D. The sign bit represents the sign of the number, with S 0 for positive and S 1 for negative number In this example with S 1 this is a negative number, i e -1 375D. In normalized form, the actual exponent is E-127 so-called excess-127 or bias-127 This is because we need to represent both positive and negative exponent With an 8-bit E, ranging from 0 to 255, the excess-127 scheme could provide actual exponent of -127 to 128 In this example, E-127 129-127 2D. Hence, the number represented is -1 375 2 2 -5 5D. De-Normalized Form. Normalized form has a serious problem, with an implicit leading 1 for the fraction, it cannot represent the number zero Convince yourself on this. De-normalized form was devised to represent zero and other numbers. For E 0 the numbers are in the de-normalized form An implicit leading 0 instead of 1 is used for the fraction and the actual exponent is always -126 Hence, the number zero can be represented with E 0 and F 0 because 0 0 2 -126 0.We can also represent very small positive and negative numbers in de-normalized form with E 0 For example, if S 1 E 0 and F 011 0000 0000 0000 0000 0000 The actual fraction is 0 011 1 2 -2 1 2 -3 0 375D Since S 1 it is a negative number With E 0 the actual exponent is -126 Hence the number is -0 375 2 -126 -4 4 10 -39 which is an extremely small negative number close to zero. In summary, the value N is calculated as follows. For 1 E 254, N -1 S 1 F 2 E-127 These numbers are in the so-called normalized form The sign-bit represents the sign of the number Fractional part 1 F are normalized with an implicit leading 1 The exponent is bias or in excess of 127 so as to represent both positive and negative exponent The range of exponent is -126 to 127.For E 0, N -1 S 0 F 2 -126 These numbers are in the so-called denormalized form The exponent of 2 -126 evaluates to a very small number Denormalized form is needed to represent zero with F 0 and E 0 It can also represents very small positive and negative number close to zero. For E 255 it represents special values, such as INF positive and negative infinity and NaN no t a number This is beyond the scope of this article. Example 1 Suppose that IEEE-754 32-bit floating-point representation pattern is 0 10000000 110 0000 0000 0000 0000 0000.Example 2 Suppose that IEEE-754 32-bit floating-point representation pattern is 1 01111110 100 0000 0000 0000 0000 0000.Example 3 Suppose that IEEE-754 32-bit floating-point representation pattern is 1 01111110 000 0000 0000 0000 0000 0001.Example 4 De-Normalized Form Suppose that IEEE-754 32-bit floating-point representation pattern is 1 00000000 000 0000 0000 0000 0000 0001.Exercises Floating-point Numberspute the largest and smallest positive numbers that can be represented in the 32-bit normalized formpute the largest and smallest negative numbers can be represented in the 32-bit normalized form. Repeat 1 for the 32-bit denormalized form. Repeat 2 for the 32-bit denormalized form. Largest positive number S 0 E 1111 1110 254 F 111 1111 1111 1111 1111 1111 Smallest positive number S 0 E 0000 00001 1 F 000 0000 0000 00 00 0000 0000.Same as above, but S 1.Largest positive number S 0 E 0 F 111 1111 1111 1111 1111 1111 Smallest positive number S 0 E 0 F 000 0000 0000 0000 0000 0001.Same as above, but S 1.Notes For Java Users. You can use JDK methods bits or bits to create a single-precision 32-bit float or double-precision 64-bit double with the specific bit patterns, and print their values For examples. IEEE-754 64-bit Double-Precision Floating-Point Numbers. The representation scheme for 64-bit double-precision is similar to the 32-bit single-precision. The most significant bit is the sign bit S , with 0 for positive numbers and 1 for negative numbers. The following 11 bits represent exponent E. The remaining 52 bits represents fraction F. The value N is calculated as follows. Normalized form For 1 E 2046, N -1 S 1 F 2 E-1023.Denormalized form For E 0, N -1 S 0 F 2 -1022 These are in the denormalized form. For E 2047 N represents special values, such as INF infinity , NaN not a number. More on Floating-Point Re presentation. There are three parts in the floating-point representation. The sign bit S is self-explanatory 0 for positive numbers and 1 for negative numbers. For the exponent E , a so-called bias or excess is applied so as to represent both positive and negative exponent The bias is set at half of the range For single precision with an 8-bit exponent, the bias is 127 or excess-127 For double precision with a 11-bit exponent, the bias is 1023 or excess-1023.The fraction F also called the mantissa or significand is composed of an implicit leading bit before the radix point and the fractional bits after the radix point The leading bit for normalized numbers is 1 while the leading bit for denormalized numbers is 0.Normalized Floating-Point Numbers. In normalized form, the radix point is placed after the first non-zero digit, e, g 9 8765D 10 -23D 1 001011B 2 11B For binary number, the leading bit is always 1, and need not be represented explicitly - this saves 1 bit of storage. In IEEE 754 s no rmalized form. For single-precision, 1 E 254 with excess of 127 Hence, the actual exponent is from -126 to 127 Negative exponents are used to represent small numbers 1 0 while positive exponents are used to represent large numbers 1 0 N -1 S 1 F 2 E-127.For double-precision, 1 E 2046 with excess of 1023 The actual exponent is from -1022 to 1023 and N -1 S 1 F 2 E-1023.Take note that n-bit pattern has a finite number of combinations 2 n , which could represent finite distinct numbers It is not possible to represent the infinite numbers in the real axis even a small range says 0 0 to 1 0 has infinite numbers That is, not all floating-point numbers can be accurately represented Instead, the closest approximation is used, which leads to loss of accuracy. The minimum and maximum normalized floating-point numbers are.0000 0001H 0 00000000 00000000000000000000001B E 0, F 00000000000000000000001B D min 0 0 1 2 -126 1 2 -23 2 -126 2 -149 1 4 10 -45.007F FFFFH 0 00000000 11111111111111111111111B E 0, F 11111111111111111111111B D max 0 1 1 2 -126 1-2 -23 2 -126 1 1754942 10 -38.0000 0000 0000 0001H D min 0 0 1 2 -1022 1 2 -52 2 -1022 2 -1074 4 9 10 -324.001F FFFF FFFF FFFFH D max 0 1 1 2 -1022 1-2 -52 2 -1022 4 4501477170144023 10 -308.Special Values. Zero Zero cannot be represented in the normalized form, and must be represented in denormalized form with E 0 and F 0 There are two representations for zero 0 with S 0 and -0 with S 1.Infinity The value of infinity e g 1 0 and - infinity e g -1 0 are represented with an exponent of all 1 s E 255 for single-precision and E 2047 for double-precision , F 0 and S 0 for INF and S 1 for - INF. Not a Number NaN NaN denotes a value that cannot be represented as real number e g 0 0 NaN is represented with Exponent of all 1 s E 255 for single-precision and E 2047 for double-precision and any non-zero fraction. Character Encoding. In computer memory, character are encoded or represented using a chosen character encoding schemes aka character set , charset , character map , or code page. For example, in ASCII as well as Latin1, Unicode, and many other character sets. code numbers 65D 41H to 90D 5AH represents A to Z respectively. code numbers 97D 61H to 122D 7AH represents a to z respectively. code numbers 48D 30H to 57D 39H represents 0 to 9 respectively. It is important to note that the representation scheme must be known before a binary pattern can be interpreted E g the 8-bit pattern 0100 0010B could represent anything under the sun known only to the person encoded it. The most commonly-used character encoding schemes are 7-bit ASCII ISO IEC 646 and 8-bit Latin-x ISO IEC 8859-x for western european characters, and Unicode ISO IEC 10646 for internationalization i18n. A 7-bit encoding scheme such as ASCII can represent 128 characters and symbols An 8-bit character encoding scheme such as Latin-x can represent 256 characters and symbols whereas a 16-bit encoding scheme such as Unicode UCS-2 can represents 65,536 characters and symbols .7-bit ASCII Code aka US-ASCII, ISO IEC 646, ITU-T T 50.ASCII American Standard Code for Information Interchange is one of the earlier character coding schemes. ASCII is originally a 7-bit code It has been extended to 8-bit to better utilize the 8-bit computer memory organization The 8th-bit was originally used for parity check in the early computers. Code numbers 32D 20H to 126D 7EH are printable displayable characters as tabulated. ISO IEC-8859 has 16 parts Besides the most commonly-used Part 1, Part 2 is meant for Central European Polish, Czech, Hungarian, etc , Part 3 for South European Turkish, etc , Part 4 for North European Estonian, Latvian, etc , Part 5 for Cyrillic, Part 6 for Arabic, Part 7 for Greek, Part 8 for Hebrew, Part 9 for Turkish, Part 10 for Nordic, Part 11 for Thai, Part 12 was abandon, Part 13 for Baltic Rim, Part 14 for Celtic, Part 15 for French, Finnish, etc Part 16 for South-Eastern European. Other 8-bit Extension of US-ASCII ASCII Extensions. Beside the standardi zed ISO-8859-x, there are many 8-bit ASCII extensions, which are not compatible with each others. ANSI American National Standards Institute aka Windows-1252 or Windows Codepage 1252 for Latin alphabets used in the legacy DOS Windows systems It is a superset of ISO-8859-1 with code numbers 128 80H to 159 9FH assigned to displayable characters, such as smart single-quotes and double-quotes A common problem in web browsers is that all the quotes and apostrophes produced by smart quotes in some Microsoft software were replaced with question marks or some strange symbols It it because the document is labeled as ISO-8859-1 instead of Windows-1252 , where these code numbers are undefined Most modern browsers and e-mail clients treat charset ISO-8859-1 as Windows-1252 in order to accommodate such mis-labeling. EBCDIC Extended Binary Coded Decimal Interchange Code Used in the early IBM computers. Unicode aka ISO IEC 10646 Universal Character Set. Before Unicode, no single character encoding scheme could represent characters in all languages For example, western european uses several encoding schemes in the ISO-8859-x family Even a single language like Chinese has a few encoding schemes GB2312 GBK, BIG5 Many encoding schemes are in conflict of each other, i e the same code number is assigned to different characters. Unicode aims to provide a standard character encoding scheme, which is universal, efficient, uniform and unambiguous Unicode standard is maintained by a non-profit organization called the Unicode Consortium Unicode is an ISO IEC standard 10646.Unicode is backward compatible with the 7-bit US-ASCII and 8-bit Latin-1 ISO-8859-1 That is, the first 128 characters are the same as US-ASCII and the first 256 characters are the same as Latin-1.Unicode originally uses 16 bits called UCS-2 or Unicode Character Set - 2 byte , which can represent up to 65,536 characters It has since been expanded to more than 16 bits, currently stands at 21 bits The range of the legal codes in IS O IEC 10646 is now from U 0000H to U 10FFFFH 21 bits or about 2 million characters , covering all current and ancient historical scripts The original 16-bit range of U 0000H to U FFFFH 65536 characters is known as Basic Multilingual Plane BMP , covering all the major languages in use currently The characters outside BMP are called Supplementary Characters which are not frequently-used. Unicode has two encoding schemes. UCS-2 Universal Character Set - 2 Byte Uses 2 bytes 16 bits , covering 65,536 characters in the BMP BMP is sufficient for most of the applications UCS-2 is now obsolete. UCS-4 Universal Character Set - 4 Byte Uses 4 bytes 32 bits , covering BMP and the supplementary characters. UTF-8 Unicode Transformation Format - 8-bit. The 16 32-bit Unicode UCS-2 4 is grossly inefficient if the document contains mainly ASCII characters, because each character occupies two bytes of storage Variable-length encoding schemes, such as UTF-8, which uses 1-4 bytes to represent a character, was de vised to improve the efficiency In UTF-8, the 128 commonly-used US-ASCII characters use only 1 byte, but some less-commonly characters may require up to 4 bytes Overall, the efficiency improved for document containing mainly US-ASCII texts. The transformation between Unicode and UTF-8 is as follows.11110uuu 10uuzzzz 10yyyyyy 10xxxxxx. In UTF-8, Unicode numbers corresponding to the 7-bit ASCII characters are padded with a leading zero thus has the same value as ASCII Hence, UTF-8 can be used with all software using ASCII Unicode numbers of 128 and above, which are less frequently used, are encoded using more bytes 2-4 bytes UTF-8 generally requires less storage and is compatible with ASCII The drawback of UTF-8 is more processing power needed to unpack the code due to its variable length UTF-8 is the most popular format for Unicode. UTF-8 uses 1-3 bytes for the characters in BMP 16-bit , and 4 bytes for supplementary characters outside BMP 21-bit. The 128 ASCII characters basic Latin letter s, digits, and punctuation signs use one byte Most European and Middle East characters use a 2-byte sequence, which includes extended Latin letters with tilde, macron, acute, grave and other accents , Greek, Armenian, Hebrew, Arabic, and others Chinese, Japanese and Korean CJK use three-byte sequences. All the bytes, except the 128 ASCII characters, have a leading 1 bit In other words, the ASCII bytes, with a leading 0 bit, can be identified and decoded easily. Example Unicode 60A8H 597DH. UTF-16 Unicode Transformation Format - 16-bit. UTF-16 is a variable-length Unicode character encoding scheme, which uses 2 to 4 bytes UTF-16 is not commonly used The transformation table is as follows. Same as UCS-2 - no encoding.000uuuuu zzzzyyyy yyxxxxxx uuuuu 0.110110ww wwzzzzyy 110111yy yyxxxxxx wwww uuuuu - 1.Take note that for the 65536 characters in BMP, the UTF-16 is the same as UCS-2 2 bytes However, 4 bytes are used for the supplementary characters outside the BMP. For BMP characters, UTF-16 is the same as UCS-2 For supplementary characters, each character requires a pair 16-bit values, the first from the high-surrogates range, uD800- uDBFF , the second from the low-surrogates range uDC00- uDFFF. UTF-32 Unicode Transformation Format - 32-bit. Same as UCS-4, which uses 4 bytes for each character - unencoded. Formats of Multi-Byte e g Unicode Text Files. Endianess or byte-order For a multi-byte character, you need to take care of the order of the bytes in storage In big endian the most significant byte is stored at the memory location with the lowest address big byte first In little endian the most significant byte is stored at the memory location with the highest address little byte first For example, with Unicode number of 60A8H is stored as 60 A8 in big endian and stored as A8 60 in little endian Big endian, which produces a more readable hex dump, is more commonly-used, and is often the default. BOM Byte Order Mark BOM is a special Unicode character having code number of FEFF H which is used to differentiate big-endian and little-endian For big-endian, BOM appears as FE FFH in the storage For little-endian, BOM appears as FF FEH Unicode reserves these two code numbers to prevent it from crashing with another character. Unicode text files could take on these formats. Big Endian UCS-2BE, UTF-16BE, UTF-32BE. Little Endian UCS-2LE, UTF-16LE, UTF-32LE. UTF-16 with BOM The first character of the file is a BOM character, which specifies the endianess For big-endian, BOM appears as FE FFH in the storage For little-endian, BOM appears as FF FEH. UTF-8 file is always stored as big endian BOM plays no part However, in some systems in particular Windows , a BOM is added as the first character in the UTF-8 file as the signature to identity the file as UTF-8 encoded The BOM character FEFFH is encoded in UTF-8 as EF BB BF Adding a BOM as the first character of the file is not recommended, as it may be incorrectly interpreted in other system You can have a UTF-8 file without BO M. Formats of Text Files. Line Delimiter or End-Of-Line EOL Sometimes, when you use the Windows NotePad to open a text file created in Unix or Mac , all the lines are joined together This is because different operating platforms use different character as the so-called line delimiter or end-of-line or EOL Two non-printable control characters are involved 0AH Line-Feed or LF and 0DH Carriage-Return or CR. Windows DOS uses OD0AH CR LF or r n as EOL. Unix and Mac use 0AH LF or n only. End-of-File EOF TODO. Windows CMD Codepage. Character encoding scheme charset in Windows is called codepage In CMD shell, you can issue command chcp to display the current codepage, or chcp codepage-number to change the codepage. The default codepage 437 used in the original DOS is an 8-bit character set called Extended ASCII which is different from Latin-1 for code numbers above 127.Codepage 1252 Windows-1252 , is not exactly the same as Latin-1 It assigns code number 80H to 9FH to letters and punctuation, such as smart single-quotes and double-quotes A common problem in browser that display quotes and apostrophe in question marks or boxes is because the page is supposed to be Windows-1252, but mislabelled as ISO-8859-1.For internationalization and chinese character set codepage 65001 for UTF8, codepage 1201 for UCS-2BE, codepage 1200 for UCS-2LE, codepage 936 for chinese characters in GB2312, codepage 950 for chinese characters in Big5.Chinese Character Sets. Unicode supports all languages, including asian languages like Chinese both simplified and traditional characters , Japanese and Korean collectively called CJK There are more than 20,000 CJK characters in Unicode Unicode characters are often encoded in the UTF-8 scheme, which unfortunately, requires 3 bytes for each CJK character, instead of 2 bytes in the unencoded UCS-2 UTF-16.Worse still, there are also various chinese character sets, which is not compatible with Unicode. GB2312 GBK for simplified chinese characters GB2312 uses 2 bytes fo r each chinese character The most significant bit MSB of both bytes are set to 1 to co-exist with 7-bit ASCII with the MSB of 0 There are about 6700 characters GBK is an extension of GB2312, which include more characters as well as traditional chinese characters. BIG5 for traditional chinese characters BIG5 also uses 2 bytes for each chinese character The most significant bit of both bytes are also set to 1 BIG5 is not compatible with GBK, i e the same code number is assigned to different character. For example, the world is made more interesting with these many standards. Notes for Windows CMD Users To display the chinese character correctly in CMD shell, you need to choose the correct codepage, e g 65001 for UTF8, 936 for GB2312 GBK, 950 for Big5, 1201 for UCS-2BE, 1200 for UCS-2LE, 437 for the original DOS You can use command chcp to display the current code page and command chcp codepagenumber to change the codepage You also have to choose a font that can display the characters e g Co urier New, Consolas or Lucida Console, NOT Raster font. Collating Sequences for Ranking Characters. A string consists of a sequence of characters in upper or lower cases, e g apple BOY Cat In sorting or comparing strings, if we order the characters according to the underlying code numbers e g US-ASCII character-by-character, the order for the example would be BOY apple Cat because uppercase letters have a smaller code number than lowercase letters This does not agree with the so-called dictionary order where the same uppercase and lowercase letters have the same rank Another common problem in ordering strings is 10 ten at times is ordered in front of 1 to 9.Hence, in sorting or comparison of strings, a so-called collating sequence or collation is often defined, which specifies the ranks for letters uppercase, lowercase , numbers, and special symbols There are many collating sequences available It is entirely up to you to choose a collating sequence to meet your application s specific req uirements Some case-insensitive dictionary-order collating sequences have the same rank for same uppercase and lowercase letters, i e A a B b Z z Some case-sensitive dictionary-order collating sequences put the uppercase letter before its lowercase counterpart, i e A B C a b c Typically, space is ranked before digits 0 to 9 followed by the alphabets. Collating sequence is often language dependent, as different languages use different sets of characters e g , , a, with their own orders. For Java Programmers. JDK 1 4 introduced a new package to support encoding decoding of characters from UCS-2 used internally in Java program to any supported charset used by external devices. Example The following program encodes some Unicode texts in various encoding scheme, and display the Hex codes of the encoded byte sequences. For Java Programmers - char and String. The char data type are based on the original 16-bit Unicode standard called UCS-2 The Unicode has since evolved to 21 bits, with code range o f U 0000 to U 10FFFF The set of characters from U 0000 to U FFFF is known as the Basic Multilingual Plane BMP Characters above U FFFF are called supplementary characters A 16-bit Java char cannot hold a supplementary character. Recall that in the UTF-16 encoding scheme, a BMP characters uses 2 bytes It is the same as UCS-2 A supplementary character uses 4 bytes and requires a pair of 16-bit values, the first from the high-surrogates range, uD800- uDBFF , the second from the low-surrogates range uDC00- uDFFF. In Java, a String is a sequences of Unicode characters Java, in fact, uses UTF-16 for String and StringBuffer For BMP characters, they are the same as UCS-2 For supplementary characters, each characters requires a pair of char values. Java methods that accept a 16-bit char value does not support supplementary characters Methods that accept a 32-bit int value support all Unicode characters in the lower 21 bits , including supplementary characters. This is meant to be an academic discuss ion I have yet to encounter the use of supplementary characters. Displaying Hex Values Hex Editors. At times, you may need to display the hex values of a file, especially in dealing with Unicode characters A Hex Editor is a handy tool that a good programmer should possess in his her toolbox There are many freeware shareware Hex Editor available Try google Hex Editor. I used the followings. NotePad with Hex Editor Plug-in Open-source and free You can toggle between Hex view and Normal view by pushing the H button. PSPad Freeware You can toggle to Hex view by choosing View menu and select Hex Edit Mode. TextPad Shareware without expiration period To view the Hex value, you need to open the file by choosing the file format of binary. UltraEdit Shareware, not free, 30-day trial only. Let me know if you have a better choice, which is fast to launch, easy to use, can toggle between Hex and normal view, free. The following Java program can be used to display hex code for Java Primitives integer, chara cter and floating-point. In Eclipse, you can view the hex code for integer primitive Java variables in debug mode as follows In debug perspective, Variable panel Select the menu inverted triangle Java Java Preferences Primitive Display Options Check Display hexadecimal values byte, short, char, int, long. Summary - Why Bother about Data Representation. Integer number 1 floating-point number 1 0 character symbol 1 and string 1 are totally different inside the computer memory You need to know the difference to write good and high-performance programs. In 8-bit signed integer integer number 1 is represented as 00000001B. In 8-bit unsigned integer integer number 1 is represented as 00000001B. In 16-bit signed integer integer number 1 is represented as 00000000 00000001B. In 32-bit signed integer integer number 1 is represented as 00000000 00000000 00000000 00000001B. In 32-bit floating-point representation number 1 0 is represented as 0 01111111 0000000 00000000 00000000B i e S 0 E 127 F 0.In 64-bit floating-point representation number 1 0 is represented as 0 01111111111 0000 00000000 00000000 00000000 00000000 00000000 00000000B i e S 0 E 1023 F 0.In 8-bit Latin-1, the character symbol 1 is represented as 00110001B or 31H. In 16-bit UCS-2, the character symbol 1 is represented as 00000000 00110001B. In UTF-8, the character symbol 1 is represented as 00110001B. If you add a 16-bit signed integer 1 and Latin-1 character 1 or a string 1 , you could get a surprise. Exercises Data Representation. For the following 16-bit codes. Give their values, if they are representing. a 16-bit unsigned integer. a 16-bit signed integer. two 8-bit unsigned integers. two 8-bit signed integers. a 16-bit Unicode characters. two 8-bit ISO-8859-1 characters. Ans 1 42 32810 2 42 -32726 3 0 42 128 42 4 0 42 -128 42 5 6 NUL PAD. REFERENCES RESOURCES. Floating-Point Number Specification IEEE 754 1985 , IEEE Standard for Binary Floating-Point Arithmetic. ASCII Specification ISO IEC 646 1991 or ITU-T T 50-1992 , Information technology - 7-bit coded character set for information interchange. Latin-I Specification ISO IEC 8859-1, Information technology - 8-bit single-byte coded graphic character sets - Part 1 Latin alphabet No 1. Unicode Specification ISO IEC 10646, Information technology - Universal Multiple-Octet Coded Character Set UCS. Unicode Consortium. Last modified January, 2014.

No comments:

Post a Comment