ASCII
ASCII ( engelsk amerikansk standardkode for informasjonsutveksling , [ ˈ æ s . k i ] [ 1 ] ) er navnet på en tabell (koding , sett), der numeriske koder er assosiert med noen vanlige trykte og ikke -utskrivbare tegn. Tabellen ble utviklet og standardisert i USA i 1963.
ASCII-tabellen definerer koder for tegn:
- Desimalsiffer ;
- latinsk alfabet ;
- nasjonalalfabet ;
- skilletegn ;
- kontrolltegn .
Historie
Opprinnelig (1963) ble ASCII utviklet for å kode tegn hvis koder passet inn i 7 biter (128 tegn; 2 7 \u003d 128), og den mest signifikante bit nr. 7 (nummerering fra null) ble brukt til å kontrollere feil som oppstod under dataoverføring . I den første versjonen var det bare store bokstaver som ble kodet. Bånd (grupper på 16 tegn) nr. 6 og 7 (nummerering starter fra 0) ble reservert for videre utvidelse. Det har vært diskusjon om å bruke dette området for små bokstaver eller kontrolltegn.
I 1965 ble det utarbeidet en ny utgave av ASCII, som aldri ble publisert. Den ble ikke brukt andre steder enn IBM 2260/2848- terminalene . Følgende spesifikasjon ble publisert i 1967, og alle tegnene i den har ikke endret posisjon i tabellen siden.
Over tid ble kodingen utvidet til 256 tegn (2 8 = 256); kodene til de første 128 tegnene er ikke endret. ASCII begynte å bli oppfattet som halvparten av 8-biters koding, og "utvidet ASCII" ble kalt ASCII med den 8. biten involvert (for eksempel KOI-8 ).
Symboloverlegg
Ved å bruke Backspace (BS) -tegnet (backspace ) på skriveren kan du skrive ut ett tegn oppå et annet. I ASCII kan du legge til diakritiske tegn på bokstaver på samme måte , for eksempel:
a BS '→ aa BS `→ aa BS ^→ âo BS /→ øc BS ,→ çn BS ~→ s
Merk . I eldre skrifttyper ble apostrof "'" trukket skrått til venstre (sammenlign: " ` " og " ´ "), og tilde "~" ble flyttet opp (sammenlign: " ~ " og " ˜ "), så de akkurat egnet for rollen som symbolene akutt "´" og "tilde på toppen".
Hvis du skriver ut det samme tegnet to ganger i én posisjon, får du et fet skrift ; hvis du skriver ut et tegn i én posisjon, og deretter et understrek «_» , får du et understreket tegn:
a BS a→ aa BS _→ a
Denne teknikken brukes fortsatt i dag, for eksempel i hjelpesystemet man.
Nasjonale varianter av ASCII
ISO 646 (ECMA-6) standarden gir mulighet for å plassere nasjonale tegn i ASCII. For å gjøre dette foreslås det å erstatte tegnene " @ ", " [ ", " \ ", " ] ", " ^ ", " ` ", " { ", " | "", " } ", " ~ ". I stedet for pundtegnet "#" kan også pundsymbolet "£" plasseres , og i stedet for dollarsymbolet "$" - valutategnet "¤" . En variant av ASCII som ikke inneholder nasjonale tegn kalles "US-ASCII" eller "internasjonal referanseversjon".
For noen språk (med ikke-latinsk skrift : russisk , gresk , arabisk , hebraisk , etc.) var det mer radikale modifikasjoner av ASCII:
- I en av disse modifikasjonene ble nasjonale symboler plassert i stedet for små latinske bokstaver (for russisk og gresk - store bokstaver ).
- I en annen modifikasjon ble veksling mellom US-ASCII og den nasjonale versjonen gitt; bytte ble utført "on the fly": ved bruk av tegnene "SO" ( eng. s hift ut ) og "SI" ( eng. s hift i n ); i dette tilfellet, i den nasjonale versjonen, var det mulig å erstatte latinske bokstaver fullstendig med nasjonale symboler. Se også: KOI-7 .
Deretter viste det seg å være mer praktisk å bruke 8-biters kodinger ( kodesider ), der den nedre halvdelen av kodetabellen (0-127) er okkupert av US-ASCII-tegn, og den øvre halvdelen (128-255) ) er opptatt av flere tegn, inkludert et sett med nasjonale tegn. Dermed ble den øvre halvdelen av ASCII-tabellen (før den utbredte adopsjonen av Unicode ) mye brukt til å representere lokaliserte tegn, bokstavene til det lokale språket. Mangelen på en enkelt standard for å plassere kyrilliske tegn i ASCII-tabellen forårsaket mange problemer med koding ( KOI-8 , Windows-1251 , etc.). Høyttalere av andre språk med ikke-latinske skript led også på grunn av tilstedeværelsen av flere forskjellige kodinger.
De første 128 tegnene i Unicode -standarden er de samme som de tilsvarende US-ASCII-tegnene.
| .0 | .en | .2 | .3 | .fire | .5 | .6 | .7 | .åtte | .9 | .EN | .B | .C | .D | .E | .F | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0. | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | HT | LF | VT | FF | CR | SÅ | SI |
| en. | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | KAN | EM | UNDER | ESC | FS | GS | RS | OSS |
| 2. | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / | |
| 3. | 0 | en | 2 | 3 | fire | 5 | 6 | 7 | åtte | 9 | : | ; | < | = | > | ? |
| fire. | @ | EN | B | C | D | E | F | G | H | Jeg | J | K | L | M | N | O |
| 5. | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
| 6. | ` | en | b | c | d | e | f | g | h | Jeg | j | k | l | m | n | o |
| 7. | s | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | DEL |
I den første versjonen av ASCII-standarden (1963) - i posisjonene 0x5e (94) og 0x5f (95) var tegnene henholdsvis "pil opp" og "pil venstre". ECMA-6-standarden (1965) erstattet dem med henholdsvis merket og understreken "_" .
I Sovjetunionen ble standarden godkjent i form av en tabell over den internasjonale referanseversjonen av koden KOI-7 H0 GOST 27463-87 (ST SEV 356-86) "Informasjonsbehandlingssystemer. 7-bits kodede tegnsett". [2]
Kontrolltegn
ASCII-tabellen ble opprettet for utveksling av informasjon over teletype . Settet inkluderte ikke-utskrivbare tegn brukt som kommandoer for å kontrollere teletypen. Lignende kommandoer ble brukt i andre meldingsverktøy før datamaskinen ( morsekode , semaforalfabet ), gitt spesifikasjonene til enheten. De fleste av ASCII-kontrollkarakterene mistet snart formålet og brukes ikke i moderne datasystemer.
Merk: lenger i listen - tegnkoder er skrevet i heksadesimalt tallsystem , etter navnene på tegnene.
- NUL , 00 - null ("tom"). Karakteren
nullhar alltid blitt ignorert. På stansede bånd ble tallet "1" angitt med et hull, og tallet "0" ble indikert med fraværet av et hull. Delene av det stansede båndet som det ikke ble registrert informasjon på, inneholdt ikke hull (det vil si at de inneholdt symbolernull); slike seksjoner var plassert i begynnelsen og på slutten av båndet. Symboletnullbrukes fortsatt på mange programmeringsspråk \u200b\u200btil i dag (som et tegn på slutten av en linje ) og er betegnet med " \0 " (Begrepet streng refererer til en sekvens av tegn.) På noen operativsystemer ernulldet siste tegnet i en tekstfil .
Meldingene som ble sendt over kommunikasjonskanalen ble delt inn i to deler:
- tittel;
- Tekst.
"Overskrift" inneholdt: avsender- og mottakeradresser, sjekksum osv .; kan plasseres før "teksten" eller etter. Begrepet "tekst" var den delen av meldingen som var ment for utskrift.
| Symbol | HEX-kode | Dekryptering | Oversettelse | Beskrivelse |
|---|---|---|---|---|
| SOH | 01 | første overskriften _ _ _ _ | begynnelsen av "header" | Start-av-header-symbolet (SOH) markerer en separasjon som ikke er datadata: den delen av strømmen som inneholder adresser og andre overhead. |
| STX | 02 | t e x t _ _ | begynnelsen av "tekst" | Slå på skriveren (TTY). Teksten for utskrift var plassert mellom symbolene " STX" og " ETX".
|
| ETX | 03 | slutten av t e x t | slutten av "tekst" | Slå av skriveren (TTY). I disse dager brukes koden " 03" til å sende et " SIGINT " -signal til en prosess og kan skrives inn ved å trykke på tastekombinasjonen + . Ved mottak av et slikt signal må prosessen avsluttes .
CtrlC |
| EOT | 04 | e nd o f t sending | slutten av overføringen | Symbolet brukes av terminalemulatorer i betydningen " End på fil " ( EOF : engelsk ende av fil ) og kan sendes ved å trykke på tastekombinasjonen Ctrl+ D. Ved mottak av et slikt signal vil terminalemulatoren bestemme prosessen som for øyeblikket jobber med terminalen, og sette slutten av filen på standardinngangsstrømmen til denne prosessen ( stdin : eng. st andar d in put stream ) . Som et resultat vil prosessen slutte å lese stdin og begynne å behandle de leste dataene. |
| ENQ | 05 | spørre _ | "Vennligst bekreft!" | |
| ACK | 06 | ack nå avsats | "Jeg bekrefter!" | Symbolet " NAK" betyr det motsatte: "Jeg bekrefter ikke!".
|
| BEL | 07 | bel l | pip : bjelle | Tegnet er ofte representert som "\a" og brukes til å høre pipet. I en moderne personlig datamaskin vil lyden bli gjengitt av den innebygde høyttaleren . For eksempel kan følgende kommandoer spille av denne lyden:
|
| BS | 08 | tilbakes tempo _ _ | returner ett tegn | Tasten brukes til å slette forrige tegn. ← Backspace |
| TAB | 09 | tabulering _ | horisontal fane | Angitt som " \t ". Noen ganger kalt " HT" (fra engelsk horisontal t abulation ) .
|
| LF | 0A | linje matet _ _ | linjeoversettelse | Kommando for å senke skrivervognen én linje ned. End-of-line-betegnelsen for en tekstfil er forskjellig på tvers av familier av operativsystemer:
I mange programmeringsspråk er symbolet representert som " \n ". Hvis du trykker på en tast mens du skriver ut tekst, oversettes linjen. ↵ Enter |
| VT | 0B | vertikal fane _ _ | vertikal fane | |
| FF | 0C | skjema matet _ _ | sidekjøring, ny side | Skriverkommando : Fortsett å skrive ut fra begynnelsen av neste ark. |
| CR | 0D | c ekteskapsretur _ _ | vognretur | Kommandoen for skriveren er å fortsette å skrive ut fra begynnelsen av gjeldende linje ( ikke fra en ny linje). I mange programmeringsspråk er symbolet " CR" betegnet som " \r ". På Mac -operativsystemet betegnet tegnet " CR" (tidligere) slutten av en linje i en tekstfil. Fra tastaturet kan symbolet " CR" skrives inn ved å trykke på tastekombinasjonen: Ctrl+ M.
|
| SÅ | 0E | s hift ut _ | "Bytt til et annet bånd (koding)" | Det andre båndet ble vanligvis farget rødt. I fremtiden ble symbolet brukt til å bytte til den nasjonale kodingen. |
| SI | 0F | s skift i n | "Bytt til original tape (koding)" | Kommandoen for å utføre handlingen, det motsatte av handlingen " SO".
|
| DLE | ti | d ata l blekkutslipp _ _ | "Skjermer datakanalen" | Eventuelle tegn etter " DLE" skal behandles som data og ikke som kontrolltegn.
|
| DC1 | elleve | d enhetskontroll 1 _ _ | Første enhetskontrollkarakter | Kommandoen for å aktivere hullbåndleseren . |
| DC2 | 12 | enhetskontroll 2 _ _ _ | Andre enhetskontrollkarakter | Kommandoen for å slå på puncheren . |
| DC3 | 1. 3 | enhetskontroll 3 _ _ _ | Tredje enhetskontrollkarakter | Kommandoen for å slå av hullbåndleseren. |
| DC4 | fjorten | enhetskontroll 4 _ _ _ | Fjerde enhetskontrollkarakter | Kommandoen for å slå av punch. |
| NAK | femten | n negativ a c k notledgment | "Jeg godkjenner ikke!" | Omvendt tegn " ACK".
|
| SYN | 16 | synkronisering _ | Dette tegnet ble overført når (for synkronisering) det var nødvendig å overføre noe. | |
| ETB | 17 | ende av t ext b lås | slutten av tekstblokken | Noen ganger ble teksten (av tekniske årsaker) delt opp i blokker. |
| KAN | atten | kan cel | "Avbryt" | Kansellering av det som tidligere ble overført. |
| EM | 19 | e n d av medium | "End of Bearer" | Uthullet tape, papir osv. har gått tom. |
| UNDER | 1A | erstatte _ | "Erstatning" | Symbolet er plassert:
For øyeblikket settes tegnet inn ved å trykke på tastekombinasjonen Ctrl+ Zog brukes til å indikere slutten av filen i operativsystemene "DOS" og "Windows" . |
| ESC | 1B | esc ape | Et tegn på at tegnet etter " ESC" har en annen (ikke-ASCII) betydning. Vanligvis blir ESCtegnet " " fulgt av escape-sekvenser ; i DOS- operativsystemet implementeres de av ANSI.SYS- driveren .
| |
| DEL | 7F | del ete | slett det siste tegnet | Symbolet " DEL" (bestående av alle enheter i binær kode) kan "hamre" et hvilket som helst tegn. Enheter og programmer ignorert " DEL" på samme måte som " NUL".
Koden til dette tegnet kommer fra de første tekstbehandlerne med hullbåndminne : i dem skjedde slettingen av et tegn ved å "hamre" koden med hull (som betegner logiske enheter ). |
Dataseparasjon i 4 nivåer ble støttet:
| Symbol | Koden | Dekryptering | Oversettelse | Beskrivelse |
|---|---|---|---|---|
| FS | 1C | filseparator _ _ _ | filseparator | meldingen kan bestå av filer |
| GS | 1D | g - gruppes separator | gruppeseparator | filer kan grupperes |
| RS | 1E | r ecord s separator | postseparator | grupper kan bestå av oppføringer |
| OSS | 1F | u nit s separator | enhetsseparator | poster kan bestå av enheter |
Strukturelle egenskaper for tabellen
- Tegnkodene til tallene "0" - "9" i det binære tallsystemet begynner med 0011 2 og slutter med binære tallverdier. For eksempel er 0101 2 tallet 5, og 0011 0101 2 er tegnet "5". Når du vet dette, kan du konvertere binærkodede desimaltall (BCD) til en ASCII-streng ved å legge til 0011 2 til venstre for hver BCD-bit.
- Bokstavene "A" - "Z" i store og små bokstaver er forskjellig i representasjonen med bare én bit, noe som forenkler konvertering av store og små bokstaver og sjekk for kode som tilhører en rekke verdier. Bokstaver er representert av deres serienummer i alfabetet , skrevet som fem sifre i det binære systemet , foran 010 2 (for store bokstaver) eller 011 2 (for små bokstaver).
- Plasseringen av store latinske bokstaver og tall ble valgt av hensyn til kompatibilitet med seks-bits kodingen DEC SIXBIT [3] :228, 237 § 14 , som dukket opp et år tidligere.
- Plasseringen av noen av de ikke-alfabetiske tegnene var på grunn av deres plassering på tastaturene på den tiden (for eksempel Teletype Model 33), hvor de migrerte fra mekaniske skrivemaskiner , spesielt "#$%_&'(). på elektromekaniske skrivemaskiner, spesielt IBM Selectric , var plasseringen av disse karakterene forskjellig, noe som er assosiert med tilstedeværelsen av noen av dem i mekanismen for å dosere støtkraften, og krevde derfor plasseringen på en nøkkel av tegn i nærheten av optisk tetthet... Plasseringen av disse tegnene, som til slutt var forskjellig fra ASCII-tabellen, ble fikset i IBM PC .
Datamaskinrepresentasjon av ASCII
På de aller fleste moderne datamaskiner er den minste adresserbare minneenheten en byte (8 bits i størrelse ); så den bruker 8-bit i stedet for 7-bit tegn. Vanligvis utvides et ASCII-tegn til 8 biter ved ganske enkelt å legge til en bit av null som den mest signifikante biten.
På IBM / 360 -datamaskiner ble imidlertid (ved bruk av ASCII) brukt en annen metode: den 6. biten (hvis den minst signifikante biten vurderes først) flyttes til den 7., og den tidligere 7. er "forked" og kopiert til 8. bit , og i 6. Dette resulterer i en tabell [4] :
| .0 | .en | .2 | .3 | .fire | .5 | .6 | .7 | .åtte | .9 | .EN | .B | .C | .D | .E | .F | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0. | NUL | SOM | EOA | EOM | EQT | WRU | EN | KLOKKE | BKSP | HT | LF | VT | FF | CR | SÅ | SI |
| en. | DC 0 | DC 1 | DC 2 | DC 3 | DC 4 | FEIL | SYNC | LEM | S0 _ | S1 _ | S2 _ | S3 _ | S4 _ | S5 _ | S6 _ | S7 _ |
| 2. | ||||||||||||||||
| 3. | ||||||||||||||||
| fire. | BLANK | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
| 5. | 0 | en | 2 | 3 | fire | 5 | 6 | 7 | åtte | 9 | : | ; | < | = | > | ? |
| 6. | ||||||||||||||||
| 7. | ||||||||||||||||
| åtte. | ||||||||||||||||
| 9. | ||||||||||||||||
| EN. | @ | EN | B | C | D | E | F | G | H | Jeg | J | K | L | M | N | O |
| b. | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ↑ | ← |
| C. | ||||||||||||||||
| D. | ||||||||||||||||
| E. | en | b | c | d | e | f | g | h | Jeg | j | k | l | m | n | o | |
| F. | s | q | r | s | t | u | v | w | x | y | z | ESC | DEL |
På datamaskiner med en minimum adresserbar minneenhet på 36 biter, ble det først brukt 6-bits tegn (1 ord = 6 tegn). Etter overgangen til ASCII begynte slike datamaskiner å plassere enten 5 syv-bits tegn i ett ord (1 bit forble overflødig), eller 4 ni-bits tegn.
ASCII-koder brukes i programmering som mellomliggende kryssplattformkoder for tastetrykk (i motsetning til IBM PC - skannekoder og andre interne koder). For QWERTY- tastaturoppsettet ser kodetabellen ut som den som vises i følgende tabell [5] .
27 112 113 114 115 116 117 118 119 120 121 122 123 44 145 19 192 49 femti 51 52 53 54 55 56 57 48 189 187 åtte 45 36 33 144 111 106 109 9 81 87 69 82 84 89 85 73 79 80 219 221 1. 3 46 35 34 103 104 105 107 tjue 65 83 68 70 71 72 74 75 76 186 222 220 100 101 102 16 226 90 88 67 86 66 78 77 188 190 191 16 38 97 98 99 1. 3 17 91 atten 32 atten 92 93 17 37 40 39 96 110 |
Se også
Merknader
- ↑ ASCII . _ Cambridge English Dictionary . dictionary.cambridge.org. Hentet 9. april 2018. Arkivert fra originalen 27. september 2017.
- ↑ GOST 27463-87 (ST SEV 356-86) Informasjonsbehandlingssystemer. 7-bits kodede tegnsett (med Amendment N 1), GOST datert 29. oktober 1987 nr. 27463-87 . docs.cntd.ru. Hentet 9. april 2018. Arkivert fra originalen 23. april 2018.
- ↑ Kodede tegnsett , historie og utvikling . - 1. - Addison-Wesley Publishing Company, Inc. , 1980. - S. 6, 66, 211, 215, 217, 220, 223, 228, 236-238, 243-245, 247-253, 423, 425-428, 435-439. — ISBN 978-0-201-14460-4 .
- ↑ Amdahl GM, Blaauw GA, Brooks FP, Jr. "Arkitektur av IBM-systemet/360". 1964
- ↑ Taster Enum . Microsoft.com . Hentet 11. juni 2022. Arkivert fra originalen 11. juni 2022.
Lenker
- ASCII fargetabell
- Standard ECMA-6: 7-bit kodet tegnsett. 6. utgave (engelsk) . Ecma international (desember 1991). Arkivert fra originalen 23. august 2011.
- Tom Jennings. En kommentert historie for noen tegnkoder eller ASCII. Amerikansk standardkode for informasjonsinfiltrasjon (engelsk) (29. oktober 2004). Arkivert fra originalen 23. august 2011.
- ASCII-diagram og andre ressurser . jimprice.com.