Heksadesimaali - Hexadecimal

In matematiikan ja laskemalla , heksadesimaali (myös pohja 16 tai hex ) numero järjestelmä on paikkasidonnainen numero järjestelmä , joka edustaa numeroita käyttämällä kantaluvun (base) 16. Toisin kuin yleinen tapa edustaa numeroita 10 symbolia, heksadesimaali käyttötarkoitukset 16 eri merkkiä, useimmiten symbolit "0" - "9" edustavat arvoja 0-9 ja "A" - "F" (tai vaihtoehtoisesti "a" - "f") edustavat arvoja 10-15.

Tietokonejärjestelmien suunnittelijat ja ohjelmoijat käyttävät laajalti heksadesimaalilukuja, koska ne tarjoavat ihmisystävällisen esityksen binäärikoodatuista arvoista. Kukin heksadesimaaliluku edustaa neljä bittiä (binary numeroa), joka tunnetaan myös napostella (tai nippu), joka on 1/2 on tavu . Esimerkiksi yhdellä tavulla voi olla arvoja välillä 00000000 - 11111111 binäärimuodossa, joka voidaan esittää kätevästi 00: sta FF: ään heksadesimaalina.

Matematiikassa perusindikaattoria käytetään tyypillisesti alaindeksin määrittämiseen. Esimerkiksi desimaaliluku1 281 ilmaistaan ​​heksadesimaalina muodossa 501 16 . Ohjelmoinnissa käytetään useita merkintöjä heksadesimaalilukujen merkitsemiseen, yleensä etuliite tai pääte. Etuliitettä 0xkäytetään C: ssä ja siihen liittyvissä ohjelmointikielissä, mikä merkitsisi tätä arvoa nimellä 0x501.

Heksadesimaalia käytetään siirtokoodauksessa Base16 , jossa selkeän tekstin jokainen tavu on jaettu kahteen 4-bittiseen arvoon ja esitetty kahdella heksadesimaaliluvulla.

Edustus

Kirjallinen esitys

Lähes kaikessa nykyaikaisessa käytössä kirjaimet A – F tai a – f edustavat arvoja 10–15, kun taas numeroita 0–9 käytetään niiden tavanomaisiin arvoihin.

Ei ole olemassa yleismaailmallista tapaa käyttää pieniä tai isoja kirjaimia, joten jokainen on yleinen tai suositeltava tietyissä ympäristöissä yhteisön standardien tai yleissopimuksen mukaan; jopa sekakoteloa käytetään usein. Seitsemän segmentin näytöt käyttävät AbCdEF-sekakokoisia numeroita, jotka voidaan erottaa toisistaan.

Välilyöntejä (pilkkuja tai muita välimerkkejä lukuun ottamatta) käytetään erik- seen standardointiin heksadesimaaliarvojen erottamiseksi pitkästä luettelosta. Esimerkiksi seuraavassa heksadesimaatissa jokainen 8-bittinen tavu on 2-numeroinen heksadesimaaliluku, jossa on välilyöntejä, kun taas 32-bittinen siirto alussa on 8-numeroinen heksadesimaaliluku.

00000000  57 69 6b 69 70 65 64 69  61 2c 20 74 68 65 20 66  
00000010  72 65 65 20 65 6e 63 79  63 6c 6f 70 65 64 69 61  
00000020  20 74 68 61 74 20 61 6e  79 6f 6e 65 20 63 61 6e 
00000030  20 65 64 69 74 0a

Erottaminen desimaalista

Tilanteissa, joissa kanta ei ole selvä, heksadesimaaliluvut voivat olla epäselviä ja sekoittaa muihin perustoihin ilmaistuihin numeroihin. Arvojen yksiselitteiseen ilmaisemiseen on useita tapoja. Numeerinen alaindeksi (joka on kirjoitettu desimaalilla) voi antaa perustan nimenomaisesti: 159 10 on desimaali 159; 159 16 on heksadesimaali 159, joka on yhtä suuri kuin 345 10 . Jotkut kirjoittajat suosivat tekstin alaindeksiä, kuten 159 desimaalia ja 159 heksadesimaalia tai 159 d ja 159 h .

Donald Knuth esitteli tietyn kirjasintyypin käytön tietyn radiksin esittämiseen kirjassaan TeXbook . Heksadesimaaliset esitykset on kirjoitettu sinne kirjoituskoneella : 5A3

Lineaarisissa tekstijärjestelmissä, kuten useimmissa tietokoneohjelmointiympäristöissä, on syntynyt erilaisia ​​menetelmiä:

  • Unix (ja siihen liittyvät) kuoret, AT&T: n kokoonpanokieli ja samoin C -ohjelmointikieli (ja sen syntaktiset jälkeläiset, kuten C ++ , C# , Go , D , Java , JavaScript , Python ja Windows PowerShell ) käyttävät 0xheksadesimaalisten numeeristen vakioiden etuliitettä : 0x5A3. Merkkivakiot ja merkkijonovakiot voivat ilmaista merkkikoodit heksadesimaalisena etuliitteellä ja \xsen jälkeen kahdella heksadesimaaliluvulla: '\x1B'edustaa Esc -ohjausmerkkiä ; "\x1B[0m\x1B[25;1H"on merkkijono, joka sisältää 11 merkkiä ja joissa on kaksi upotettua Esc -merkkiä. Jos haluat tulostaa kokonaisluvun heksadesimaalina printf -funktioperheen kanssa, käytetään muotoa muunnoskoodi %Xtai %x.
  • In URI (kuten URL-osoitteita ), merkki koodit kirjoitetaan heksadesimaali paria etuliitteenä %: http://www.example.com/name%20with%20spacesmissä %20on koodi tilan (tyhjä) merkin, ASCII- koodi kohta 20 hex, 32 desimaalin.
  • In XML ja XHTML , merkit voidaan ilmaista heksadesimaali numeerinen merkki viittaukset käyttäen merkintää , esimerkiksi edustaa U + 2019 (oikealla puolilainausmerkki). Jos numeroa ei ole , numero on desimaali (eli sama merkki).&#xcode;’x’
  • Vuonna Unicode -standardin, merkin arvo on edustettuna U+seuraa hex arvo, esimerkiksi U+20ACon euro merkki (€).
  • Viitevärit HTML, CSS ja X Window voidaan ilmaista kuudella heksadesimaaliyksikön (kaksi kutakin punaisen, vihreän ja sinisen komponentit, tässä järjestyksessä) etuliitteenä #: valkoinen, on esimerkiksi edustettuina #FFFFFF. CSS sallii myös kolmen kuusinumeroisen lyhenteen, jossa on yksi kuusinumeroinen komponentti: #FA3 lyhenne #FFAA33 (kultainen oranssi:  ).
  • In MIME (sähköposti laajennukset) lainasi-printable koodausta, merkki koodit kirjoitetaan heksadesimaali paria etuliitteellä =: Espa=F1aon "España" (F1 on koodi N in ISO / IEC 8859-1 merkistön).)
  • Intelin johtamissa kokoonpanokielissä ja Modula-2: ssa heksadesimaalia merkitään päätelaitteella H tai h : FFhtai 05A3H. Jotkut toteutukset edellyttävät nollaa, kun ensimmäinen heksadesimaaliluku ei ole desimaaliluku, joten kirjoitetaan 0FFhsen sijaan FFh. Jotkin muut toteutukset (kuten NASM) sallivat C-tyyliset numerot ( 0x42).
  • Muut konekieliä ( 6502 , Motorola ), Pascal , Delphi , jotkut versiot BASIC ( Commodore ), GameMaker kieli , Godot ja Forth käyttää $etuliitteenä: $5A3.
  • Jotkut kokoonpanokielet (mikrosiru) käyttävät merkintää H'ABCD'(ABCD 16 ). Samoin Fortran 95 käyttää Z'ABCD: tä.
  • Ada ja VHDL liittää heksadesimaali numerot pohjainen "numeerinen lainausmerkkejä": 16#5A3#. Bitille vektori vakiot VHDL käyttää merkintää x"5A3".
  • Verilog edustaa heksadesimaalivakioita muodossa 8'hFF, jossa 8 on bitin lukumäärä arvossa ja FF on heksadesimaalivakio.
  • Smalltalk kieli käyttää etuliitettä 16r:16r5A3
  • PostScript ja Bourne shell ja sen johdannaiset tarkoittavat hex Katkaisuhaku 16#: 16#5A3. PostScript, binaarinen data (kuten kuvan pikselit ) voidaan ilmaista unprefixed peräkkäisen heksadesimaali paria: AA213FD51B3801043FBC...
  • Common Lisp käyttää etuliitteitä #xja #16r. Asetamalla muuttujat * read-base * ja * print-base * arvoon 16 voidaan myös vaihtaa Common Lisp -järjestelmän lukija ja tulostin heksadesimaaliluvuksi lukujen lukemista ja tulostamista varten. Siten heksadesimaaliluvut voidaan esittää ilman etuliitettä #x tai #16r, kun tulo- tai lähtökanta on muutettu arvoon 16.
  • MSX BASIC , QuickBASIC , FreeBASIC ja Visual Basic etuliite heksadesimaaliluvut ja &H:&H5A3
  • BBC BASIC ja Locomotive BASIC käyttö &kuusio.
  • TI-89- ja 92-sarjassa käytetään 0hetuliitettä:0h5A3
  • Algol 68 käytöt etuliitteen 16rkuvaamaan heksadesimaalilukuina: 16r5a3. Binaariset, kvaternaariset (base-4) ja oktaaliluvut voidaan määrittää samalla tavalla.
  • Yleisin heksadesimaalimuoto perinteisissä käyttöjärjestelmissä ( zOS , zVSE , zVM , TPF , IBM i ) toimivissa IBM: n keskuskoneissa ( zSeries ) ja keskialuetietokoneissa ( IBM i ) on Assembler, PL/I , COBOL , JCL , komentosarjoja, komentoja ja muita paikkoja. Tämä muoto oli yleinen myös muissa (ja nyt vanhentuneissa) IBM -järjestelmissä. Joskus lainausmerkkejä käytettiin apostrofien sijasta.X'5A3'
  • Mikä tahansa IPv6 -osoite voidaan kirjoittaa kahdeksaksi neljän heksadesimaalinumeron ryhmäksi (joskus kutsutaan heksteteiksi ), jolloin jokainen ryhmä on erotettu kaksoispisteellä ( :). Tämä on esimerkiksi kelvollinen IPv6 -osoite: 2001:0db8:85a3:0000:0000:8a2e:0370:7334tai lyhennetty poistamalla nollia nimellä 2001:db8:85a3::8a2e:370:7334( IPv4 -osoitteet kirjoitetaan yleensä desimaalilla).
  • Maailmanlaajuisesti yksilölliset tunnisteet kirjoitetaan kolmekymmentäkaksi heksadesimaalilukua, usein esimerkiksi epätasaisissa väliviivoissa erotetuissa ryhmissä 3F2504E0-4F89-41D3-9A0C-0305E82C3301.

Muut symbolit 10-15

Kirjainten A - F käyttö edustamaan numeroita yli 9 ei ollut yleistä tietokoneiden varhaisessa historiassa.

  • 1950-luvulla jotkut asennukset, kuten Bendix-14, suosivat numeroiden 0–5 käyttämistä ja yliviivan merkitsemään arvot 10–15 arvoina 0 , 1 , 2 , 3 , 4 ja 5 .
  • SwaC (1950) ja Bendix G-15 (1956) tietokoneita käytetään pieniä kirjaimia u , v , w , x , y ja z- arvojen 10-15.
  • ILLIAC I (1952) käytettävän tietokoneen isot kirjaimet K , S , N , J , F ja L arvojen 10-15.
  • Librascope LGP-30 (1956) käytti kirjaimia F , G , J , K , Q ja W arvoille 10-15.
  • Honeywell Datamatic D-1000 (1957) käytti pienet kirjaimet b , c , d , e , f , ja g , kun taas Elbit  100 (1967) käytti isoja kirjaimia B , C , D , E , F ja G niiden arvojen 10–15.
  • Monrobot XI (1960), jota käytetään kirjaimia S , T , U , V , W ja X arvojen 10-15.
  • NEC parametron tietokone NEAC 1103 (1960) käytetään kirjaimet D , G , H , J , K (ja mahdollisesti V ) arvoja 10-15.
  • Pacific Data Systems 1020 (1964) käytti kirjaimia L , C , A , S , M ja D arvoissa 10 - 15.
  • Uusi numeerinen symbolit ja nimet otettiin käyttöön Bibi-binary merkintätapa by Boby Lapointe vuonna 1968. Tämä merkintätapa ei tullut hyvin suosittu.
Bruce Alan Martinin heksadesimaalinen merkintäehdotus
  • Bruce Alan Martin Brookhavenin kansallisesta laboratoriosta piti A -F -valintaa "naurettavana". Vuonna 1968 CACM: n toimittajalle lähettämässään kirjeessä hän ehdotti täysin uutta symbolisarjaa bittien sijaintien perusteella, mikä ei saanut paljon hyväksyntää.
  • Jotkut seitsemän segmentin näytön dekooderin sirut (eli 74LS47) näyttävät odottamattoman lähdön logiikan vuoksi, joka on suunniteltu vain tuottamaan 0-9 oikein.

Sanalliset ja digitaaliset esitykset

Ei ole olemassa perinteisiä numeroita, jotka edustavat määriä kymmenestä viiteentoista-kirjaimia käytetään korvikkeena-ja useimmilla eurooppalaisilla kielillä ei ole desimaalisia nimiä kymmenen yläpuolella oleville numeroille. Vaikka englannilla on nimiä useille ei-desimaalitehoille ( pari ensimmäiselle binaariteholle , pisteet ensimmäiselle vigesimaaliselle voimalle, tusina , brutto ja suuri brutto kolmelle ensimmäiselle kaksois desimaalille), mikään englanninkielinen nimi ei kuvaa heksadesimaalisia voimia (desimaali 16 , 256, 4096, 65536, ...). Jotkut ihmiset lukevat heksadesimaalilukuja numero kerrallaan, kuten puhelinnumeron, tai käyttämällä Naton foneettisia aakkosia , Joint Army/Navy Phonetic Alphabetia tai vastaavaa ad-hoc- järjestelmää. Heksadesimaalien käyttöönoton jälkeen IBM System/360 -ohjelmoijien keskuudessa Magnuson (1968) ehdotti ääntämisopasta, joka antoi heksadesimaalikirjaimille lyhyitä nimiä - esimerkiksi "A" lausuttiin "ann", B "bet", C "chris" jne. Babb (2015) kehitti toisen nimitysjärjestelmän, joka oli TV -sarjasta vitsi. Vielä yksi nimitysjärjestelmä on julkaistu verkossa Rogersin (2007) avulla, joka yrittää tehdä sanallisen esityksen joka tapauksessa erottamiskykyiseksi, vaikka todellinen luku ei sisällä numeroita A – F. Esimerkkejä on lueteltu alla olevissa taulukoissa.

Heksadesimaalinen sormenlaskenta

Järjestelmät laskee Sitä numeroa on laadittu sekä binary ja heksadesimaali. Arthur C.Clarke ehdotti jokaisen sormen käyttämistä päälle/pois -bittinä, jolloin sormien laskeminen nollasta 1023 10 : een kymmenellä sormella. Toinen järjestelmä enintään 16 FF: n (255 10 ) laskemiseen on esitetty oikealla.

Magnussonin (1968)
nimeämismenetelmä
Määrä Ääntäminen
A ann
B veto
C chris
D piste
E ernest
F pakkasta
1A annteen
A0 annty
5B viisikymmentä
A01C annty christeen
1AD0 annteen dotty
3A7D kolmekymmentä vuotta seitsemänkymmentä pistettä
Rogersin (2007)
nimeämismenetelmä
Määrä Ääntäminen
A kymmenen
B yksitoista
C kaksitoista
D valuta
E eptwin
F fim
10 tex
11 oneteek
1F fimteek
50 fiftek
C0 twelftek
100 hundrek
1000 tuhansia
3E thirtek-eptwin
E1 eptek-one
C4A kaksitoista-hundrek-fourtek-ten
1743 yksi tuhannes-seitsemän
-hundrek-neljätoista-kolme

Merkit

Heksadesimaalijärjestelmä voi ilmaista negatiivisia numeroita samalla tavalla kuin desimaalilukuja: −2A esittää -42 10 ja niin edelleen.

Heksadesimaalilla voidaan myös ilmaista suorittimessa käytetyt tarkat bittikuviot , joten heksadesimaaliluku voi edustaa allekirjoitettua tai jopa liukulukuarvoa . Tällä tavoin negatiivinen luku −42 10 voidaan kirjoittaa FFFF FFD6: na 32-bittisessä CPU-rekisterissä ( kahden komplementissa ), kuten C228 0000 32-bittisessä FPU- rekisterissä tai C045 0000 0000 0000 64-bittisessä FPU: ssa rekisteröidä ( IEEE-liukuluku-standardissa ).

Heksadesimaalinen eksponentiaalinen merkintä

Aivan kuten desimaaliluvut voidaan esittää eksponentiaalisesti , samoin heksadesimaaliluvut. Perinteisesti kirjain P (tai p , "teho") edustaa kertaa kaksi, joka on korotettu potenssiin , kun taas E (tai e ) palvelee samaa tarkoitusta desimaalina osana E -merkintää . P: n jälkeinen luku on desimaali ja edustaa binaarista eksponenttia. Eksponentin suurentaminen yhdellä kertoo 2: lla, ei 16. 10.0p1 = 8.0p2 = 4.0p3 = 2.0p4 = 1.0p5. Yleensä luku normalisoidaan siten, että heksadesimaalinumero on 1 (ellei arvo ole täsmälleen 0).

Esimerkki: 1.3DEp42 edustaa 1.3DE 16  × 2 42 10 .

Heksadesimaalinen eksponentiaalinen merkintä vaaditaan IEEE 754-2008 -binaariliukulukustandardissa . Tätä merkintää voidaan käyttää C-ohjelmointikielen C99- version liukulukukirjaimiin . Käyttämällä %a- tai %A -muunnosmääritteitä tämä merkintä voidaan tuottaa toteuttamalla printf -toimintoperhe C99 -määrityksen ja Single Unix -määrityksen (IEEE Std 1003.1) POSIX -standardin mukaisesti.

Muuntaminen

Binaarimuunnos

Useimmat tietokoneet manipuloivat binääridataa, mutta ihmisten on vaikea työskennellä suurella määrällä numeroita edes suhteellisen pienellä binääriluvulla. Vaikka useimmat ihmiset tuntevat perus 10 -järjestelmän, binäärinen on paljon helpompi yhdistää heksadesimaaliin kuin desimaaliin, koska jokainen heksadesimaaliluku kartoittaa kokonaiseen bittimäärään (4 10 ). Tämä esimerkki muuntaa 1111 2 : n kymmeneen. Koska jokainen binääriluvun paikka voi sisältää joko 1 tai 0, sen arvo voidaan helposti määrittää sen sijainnin perusteella oikealta:

  • 0001 2 = 1 10
  • 0010 2 = 2 10
  • 0100 2 = 4 10
  • 1000 2 = 8 10

Siksi:

1111 2 = 8 10 + 4 10 + 2 10 + 1 10
  = 15 10

Pienellä harjoituksella 1111 2: n ja F 16: n yhdistäminen yhdestä vaiheesta on helppoa: katso taulukko kirjallisessa esityksessä . Etuna käyttää heksadesimaalia desimaalin sijasta kasvaa nopeasti numeron koon myötä. Kun luku tulee suureksi, muuntaminen desimaaliksi on erittäin työlästä. Kuitenkin heksadesimaaliin kartoitettaessa on triviaalia pitää binäärijonoa 4-numeroisina ryhminä ja yhdistää jokainen heksadesimaalilukuun.

Tässä esimerkissä näkyy binääriluvun muuntaminen desimaaliksi, jokaisen numeron yhdistäminen desimaalilukuun ja tulosten lisääminen.

(01011110101101010010) 2 = 262144 10 + 65536 10 + 32768 10 + 16384 10 + 8192 10 + 2048 10 + 512 10 + 256 10 + 64 10 + 16 10 + 2 10
  = 387922 10

Vertaa tätä muuntamiseen heksadesimaaliksi, jossa jokainen nelinumeroinen ryhmä voidaan tarkastella itsenäisesti ja muuntaa suoraan:

(01011110101101010010) 2 = 0101  1110  1011  0101  0010 2
  = 5 E B 5 2 16
  = 5EB52 16

Muuntaminen heksadesimaalista binaariksi on yhtä suora.

Muut yksinkertaiset muunnokset

Vaikka kvaternaarista (pohja 4) käytetään vähän, se voidaan helposti muuntaa heksadesimaaliseksi tai binääriseksi. Jokainen heksadesimaaliluku vastaa kvaternaaristen numeroiden paria ja jokainen kvaternaarinen numero vastaa binäärilukuparia. Yllä olevassa esimerkissä 5 E B 5 2 16 = 11 32 23 11 02 4 .

Oktaali (emäs 8) järjestelmä voidaan myös muuttaa suhteellisen helposti, vaikka ei aivan yhtä triviaalisti kuin emästen kanssa 2 ja 4. Jokainen oktaali numero vastaa kolme binäärilukuja, pikemminkin kuin neljä. Siksi voimme muuntaa oktaalin ja heksadesimaalin välimuunnoksen avulla binaariksi, minkä jälkeen binääriluvut ryhmitellään uudelleen kolmen tai neljän ryhmään.

Osasto-jäännös lähdekannassa

Kuten kaikissa kannoissa, on olemassa yksinkertainen algoritmi luvun esityksen muuntamiseksi heksadesimaaliksi tekemällä kokonaislukujakauma ja loput toiminnot lähdekannassa. Teoriassa tämä on mahdollista mistä tahansa kannasta, mutta useimmille ihmisille vain desimaaliluku ja useimmille tietokoneille vain binaarinen (joka voidaan muuntaa paljon tehokkaammilla menetelmillä) voidaan helposti käsitellä tällä menetelmällä.

Olkoon d numero, jota edustaa heksadesimaalina, ja sarja h i h i − 1 ... h 2 h 1 on numeroa edustava heksadesimaaliluku.

  1. i ← 1
  2. h i ← d mod 16
  3. d ← (d - h i ) / 16
  4. Jos d = 0 (palauta sarja h i ), lisää lisäystä i ja siirry vaiheeseen 2

"16" voidaan korvata millä tahansa muulla halutulla alustalla.

Seuraavassa on JavaScript -toteutus yllä olevasta algoritmista minkä tahansa luvun muuntamiseksi heksadesimaaliksi merkkijonon esityksessä. Sen tarkoitus on havainnollistaa yllä olevaa algoritmia. Tietojen käsittelemiseksi vakavasti on kuitenkin paljon suositeltavampaa työskennellä bittikohtaisten operaattoreiden kanssa .

function toHex(d) {
  var r = d % 16;
  if (d - r == 0) {
    return toChar(r);
  }
  return toHex((d - r) / 16) + toChar(r);
}

function toChar(n) {
  const alpha = "0123456789ABCDEF";
  return alpha.charAt(n);
}

Muuntaminen lisäämisen ja kertomisen kautta

Heksadesimaalinen kertotaulukko

On myös mahdollista tehdä muunnos määrittämällä kullekin lähdekannan paikalle sen paikka -arvon heksadesimaalinen esitys - ennen kuin kerrotaan ja lisätään lopullinen esitys. Jos esimerkiksi haluat muuntaa luvun B3AD desimaaliluvuksi, heksadesimaaliluvun voi jakaa sen numeroiksi: B (11 10 ), 3 (3 10 ), A (10 10 ) ja D (13 10 ), ja sitten saadaan lopullinen kertomalla jokaisen desimaalin esityksen 16 p: llä ( p on vastaava heksadesimaalinumero, laskettuna oikealta vasemmalle, alkaen 0: sta). Tässä tapauksessa meillä on tämä:

B3AD = (11 × 16 3 ) + (3 × 16 2 ) + (10 × 16 1 ) + (13 × 16 0 )

joka on 45997 tukikohdassa 10.

Työkalut muuntamiseen

Useimmat nykyaikaiset tietokonejärjestelmät, joissa on graafiset käyttöliittymät, tarjoavat sisäänrakennetun laskinohjelman, joka pystyy suorittamaan muunnoksia eri säteiden välillä, ja useimmissa tapauksissa heksadesimaalit myös.

Vuonna Microsoft Windows , The Laskin hyödyllisyys voidaan asettaa tieteellisen tilassa (kutsutaan ohjelmoija tilassa joissakin versioissa), joka mahdollistaa muunnoksia välillä kantaluku 16 (heksadesimaali), 10 (desimaali), 8 ( oktaali ) ja 2 ( binary ), pohjat eniten jota ohjelmoijat yleensä käyttävät. Tieteellisessä tilassa näytön numeronäppäimistö sisältää heksadesimaaliluvut A-F, jotka ovat aktiivisia, kun "Hex" valitaan. Hex -tilassa Windows -laskin tukee kuitenkin vain kokonaislukuja.

Perusaritmetiikka

Perustoiminnot, kuten yhteenlasku, vähennys, kertolasku ja jako, voidaan suorittaa epäsuorasti muuntamalla vaihtoehtoiseen numerojärjestelmään , kuten yleisesti käytetty desimaalijärjestelmä tai binaarijärjestelmä, jossa jokainen heksadesimaali vastaa neljää binaarilukua.

Vaihtoehtoisesti voidaan suorittaa myös alkeisoperaatioita suoraan itse kuusiojärjestelmässä - luottaen sen yhteenlasku-/kertotaulukoihin ja niitä vastaaviin standardialgoritmeihin, kuten pitkäjako ja perinteinen vähennysalgoritmi.

Todelliset luvut

Rationaaliset luvut

Kuten muitakin numerojärjestelmiä, heksadesimaalijärjestelmää voidaan käyttää edustamaan järkeviä lukuja , vaikka toistuvat laajennukset ovat yleisiä, koska kuusitoista (10 16 ): lla on vain yksi alkutekijä; kaksi.

Minkä tahansa kannan osalta 0,1 (tai "1/10") vastaa aina yhtä, joka on jaettu kyseisen perusarvon esityksellä omassa numerojärjestelmässään. Täten, jaetaanko yksi kahdella binaariseksi tai jaetaan yksi kuusitoista heksadesimaalille, molemmat murtoluvut kirjoitetaan muodossa 0.1. Koska säde 16 on täydellinen neliö (4 2 ), heksadesimaaleina ilmaistuilla murto -osilla on pariton jakso paljon useammin kuin desimaaliluvut, eikä syklisiä lukuja (paitsi triviaaleja yksittäisiä numeroita) ole. Toistuvat numerot esitetään, kun alimmalla nimittäjällä on alkutekijä, jota ei löydy radiksista; siis heksadesimaalimerkintöjä käytettäessä kaikki murtoluvut, joiden nimittäjät eivät ole kahden voima, johtavat äärettömään toistuvien numeroiden merkkijonoon (kuten kolmannekset ja viidesosat). Tämä tekee heksadesimaalista (ja binäärisestä) vähemmän kätevää kuin desimaaliluvut järkevien lukujen esittämiseen, koska suurempi osa on sen rajallisen esitysalueen ulkopuolella.

Kaikki rationaalilukuja äärellisen esitettävissä heksadesimaali ovat myös finitely esitettävissä desimaali, duodecimal ja seksagesimaaliluvut : se on, kaikki heksadesimaaliluku, joilla on rajallinen määrä numeroita on myös rajallinen määrä numeroita, kun ilmaistaan ne muut emäkset. Päinvastoin, vain murto -osa niistä, jotka ovat rajallisesti edustettavissa jälkimmäisissä emäksissä, on äärellisesti edustettavissa heksadesimaaleina. Esimerkiksi desimaali 0,1 vastaa ääretöntä toistuvaa esitystä 0,1 9 heksadesimaalina. Kuitenkin heksadesimaali on tehokkaampi kuin kaksi- ja seksimaaliluku edustamaan murto -osia, joiden voimat ovat kaksi nimittäjässä. Esimerkiksi 0,0625 10 (yksi kuudestoista) vastaa 0,1 16 , 0,09 12 ja 0; 3,45 60 .

n
Peruskannan desimaaliset alkutekijät, b = 10: 2 , 5 ; b - 1 = 9: 3 ; b + 1 = 11: 11

Emäksen heksadesimaaliset alkutekijät, b = 16 10 = 10: 2 ; b - 1 = 15 10 = F: 3, 5 ; b + 1 = 17 10 = 11: 11
Murtoluku päätekijät Paikallinen esitys Paikallinen esitys päätekijät Murtoluku (1/n)
2 1/2 2 0,5 0.8 2 1/2
3 1/3 3 0. 3333 ... = 0. 3 0. 5555 ... = 0. 5 3 1/3
4 1/4 2 0,25 0.4 2 1/4
5 1/5 5 0.2 0. 3 5 1/5
6 1/6 2 , 3 0,1 6 0,2 A 2 , 3 1/6
7 1/7 7 0. 142857 0. 249 7 1/7
8 1/8 2 0,125 0.2 2 1/8
9 1/9 3 0. 1 0. 1C7 3 1/9
10 1/10 2 , 5 0,1 0,1 9 2 , 5 1/A
11 1/11 11 0. 09 0. 1745D B 1/B
12 1/12 2 , 3 0,08 3 0,1 5 2 , 3 1/C
13 1/13 13 0. 076923 0. 13B D 1/D
14 1/14 2 , 7 0,0 714285 0,1 249 2 , 7 1/E
15 1/15 3 , 5 0,0 6 0. 1 3 , 5 1/F
16 1/16 2 0,0625 0,1 2 1/10
17 1/17 17 0. 0588235294117647 0. 0F 11 1/11
18 1/18 2 , 3 0,0 5 0,0 E38 2 , 3 1/12
19 1/19 19 0. 052631578947368421 0. 0D79435E5 13 1/13
20 1/20 2 , 5 0,05 0,0 C 2 , 5 1/14
21 1/21 3 , 7 0. 047619 0. 0C3 3 , 7 1/15
22 1/22 2 , 11 0,0 45 0,0 BA2E8 2 , B 1/16
23 1/23 23 0. 0434782608695652173913 0. 0B21642C859 17 1/17
24 1/24 2 , 3 0,041 6 0,0 A 2 , 3 1/18
25 1/25 5 0,04 0. 0A3D7 5 1/19
26 1/26 2 , 13 0,0 384615 0,0 9D8 2 , D 1/1A
27 1/27 3 0. 037 0. 097B425ED 3 1/1B
28 1/28 2 , 7 0,03 571428 0,0 924 2 , 7 1/1C
29 1/29 29 0. 0344827586206896551724137931 0. 08D3DCB 1D 1/1D
30 1/30 2 , 3 , 5 0,0 3 0,0 8 2 , 3 , 5 1/1E
31 1/31 31 0. 032258064516129 0. 08421 1F 1/1F
32 1/32 2 0,03125 0,08 2 1/20
33 1/33 3 , 11 0. 03 0. 07C1F 3 , B 1/21
34 1/34 2 , 17 0,0 2941176470588235 0,0 78 2 , 11 1/22
35 1/35 5 , 7 0,0 285714 0. 075 5 , 7 1/23
36 1/36 2 , 3 0,02 7 0,0 71C 2 , 3 1/24

Irrationaaliset luvut

Alla olevassa taulukossa esitetään joidenkin yleisten irrationaalisten lukujen laajennukset desimaalilla ja heksadesimaalilla.

Määrä Paikallinen esitys
Desimaali Heksadesimaali
2 ( neliön yksikön lävistäjän pituus ) 1,414 213 562 373 095 048 ... 1.6A09E667F3BCD ...
3 (pituus lävistäjä yksikön kuutio ) 1,732 050 807 568 877 293 ... 1.BB67AE8584CAA ...
5 ( 1 × 2 -suorakulmion lävistäjän pituus ) 2,236 067 977 499 789 696 ... 2.3C6EF372FE95 ...
φ (phi, kultainen suhde = (1+ 5 )/2 ) 1,618 033 988 749 894 848 ... 1.9E3779B97F4A ...
π (pi, suhde kehän ja halkaisijan ympyrän) 3,141 592 653 589 793 238 462 643
383 279 502 884 197 169 399 375 105 ...
3.243F6A8885A308D313198A2E0
3707344A4093822299F31D008 ...
e ( luonnollisen logaritmin perusta ) 2,718 281 828 459 045 235 ... 2.B7E151628AED2A6B ...
τ (to -Morse -vakio ) 0,412 454 033 640 107 597 ... 0,6996 9669 9669 6996 ...
γ (rajoitusero
harmonisen sarjan ja luonnollisen logaritmin välillä)
0,577 215 664 901 532 860 ... 0.93C467E37DB0C7A4D1B ...

Voimat

Kahden voiman laajennukset heksadesimaaliluvulla ovat hyvin yksinkertaisia. Kaksi ensimmäistä kuusitoista voimaa on esitetty alla.

2 x Arvo Arvo (desimaali)
2 0 1 1
2 1 2 2
2 2 4 4
2 3 8 8
2 4 10 kuusio 16 joulukuu
2 5 20 heksaa 32 joulu
2 6 40 kuusio 64 joulu
2 7 80 kuusio 128 jouluk
2 8 100 heksaa 256 jouluk
2 9 200 heksaa 512 jouluk
2 A (2 10 joulu ) 400 hex 1024 jouluk
2 B (2 11 joulu ) 800 hex 2048 joulukuu
2 C (2 12 joulu ) 1000 hex 4096 jouluk
2 D (2 13 joulu ) 2000 hex 8192 jouluk
2 E (2 14 joulu ) 4000 kuusio 16 384 jouluk
2 F (2 15 haj ) 8000 kuusio 32 768 jouluk
2 10 (2 16 haj ) 10000 kuusio 65 536 jouluk

Kulttuurihistoria

Perinteiset kiinalaiset mittayksiköt olivat perus-16. Esimerkiksi yksi jīn (斤) vanhassa järjestelmässä vastaa kuusitoista taalia . Suanpan (Kiinan Abacus ) voidaan käyttää suorittamaan heksadesimaalilaskutoimitusten kuten lisäyksiä ja vähennyksiä.

Kuten kaksois desimaalijärjestelmässä, on ajoittain yritetty mainostaa heksadesimaalia edullisena numerojärjestelmänä. Nämä yritykset ehdottavat usein erityistä ääntämistä ja symboleja yksittäisille numeroille. Jotkut ehdotukset yhdenmukaistavat vakiomittaukset siten, että ne ovat moninkertaisia ​​16. Aikaisemman tällaisen ehdotuksen esitti John W. Nystrom teoksessa Project of a New System of Arithmetic, Weight, Measure and Coins: Proposed to be the Tonal System, with Sixteen että Base , julkaistiin vuonna 1862. Nyström muun muassa ehdotti heksadesimaali aikaa , joka jakaa päivässä 16, niin että on olemassa 16 "tuntia" (tai "10 TIMS ", lausutaan tontim ) päivässä.

Sana heksadesimaalinen kirjaamisesta vuonna 1952. Se on macaronic siinä mielessä, että se yhdistää Kreikan ἕξ (hex) "kuusi" ja Latinate -decimal . Täysin Latinalaisen vaihtoehtoiset sexadecimal (vertaa sanaa seksagesimaali perus- 60) on vanhempi, ja näkee ainakin tilapäiseen käyttöön myöhään 19th century. Se on edelleen käytössä Bendixin dokumentaatiossa 1950 -luvulla . Schwartzman (1994) väittää, että sexadecimalin käyttöä on voitu välttää, koska se ehdottaa lyhennettä sukupuoleen . Monet länsimaiset kielet ovat 1960 -luvulta lähtien ottaneet käyttöön termejä, jotka vastaavat heksadesimaalia (esim. Ranskalainen heksadesimaali , italialainen esadecimale , romania heksadesimaali , serbialainen хексадецимални jne.), Mutta toiset ovat ottaneet käyttöön termejä, jotka korvaavat natiivi sanat "kuusitoista" (esim. Kreikkalainen sextándakerfi , venäjä шестнадцатеричной jne.)

Terminologia ja merkintätavat saivat selville vasta 1960 -luvun lopulla. Donald Knuth väitti vuonna 1969, että etymologisesti oikea termi olisi vanhempi tai mahdollisesti istuva , latinalainen termi, jonka tarkoituksena on välittää "ryhmitelty 16" binaarisen , kolmi- ja kvaternaarisen jne. Mallin mukaan. Knuthin väitteen mukaan oikeat termit desimaalille ja oktaalille aritmeettinen olisi kymmen- ja octonary , vastaavasti. Alfred B. Taylor käytti valtiopäivätyötä 1800-luvun puolivälin työtään vaihtoehtoisista numeroperusteista , vaikka hän hylkäsi kannan 16 sen "epämiellyttävän lukumäärän" vuoksi.

Nykyinen merkintä, joka käyttää kirjaimia A-F, on todellinen standardi vuodesta 1966 lähtien, kun julkaistiin Fortran IV: n käsikirja IBM System/360: lle , joka (toisin kuin Fortranin aiemmat versiot) tunnistaa standardin heksadesimaalivakioiden syöttämistä varten. Kuten edellä on mainittu, vaihtoehtoisia merkintöjä käyttivät NEC (1960) ja The Pacific Data Systems 1020 (1964). IBM: n omaksuma standardi näyttää tulleen laajalti käyttöön vuonna 1968, kun Bruce Alan Martin CACM: n toimittajalle lähettämässään kirjeessä valittaa, että

"Koska naurettava kirjainten A, B, C, D, E, F valitseminen heksadesimaalilukusymboleina lisää jo vaikeita ongelmia erottaa oktaaliluvut (tai heksadesimaaliluvut) desimaaliluvuista (tai muuttujien nimistä), aika on ylikypsää uudelleenarviointia varten. Tämä olisi pitänyt tehdä ennen kuin huonot valinnat geeliytyivät de facto -standardiksi! "

Martinin argumentti oli, että numeroiden 0-9 käyttö ei-desimaaliluvuissa "merkitsee meille kymmenen perusarvon kaavaa": "Miksei käytettäisi täysin uusia symboleja (ja nimiä) seitsemän tai viidentoista ei-nollanumeron kohdalla, joita tarvitaan oktaalissa tai heksadesimaalissa "Jopa kirjainten A - P käyttö olisi parannus, mutta täysin uudet symbolit voisivat heijastaa järjestelmän binaarista luonnetta".


Base16 (siirtokoodaus)

Base16 (oikea nimi ilman välilyöntiä) voi myös viitata binaariksi tekstikoodaukseen , joka kuuluu samaan perheeseen kuin Base32 , Base58 ja Base64 .

Tässä tapauksessa tiedot jaetaan 4-bittisiksi sekvensseiksi, ja jokainen arvo (0 ja 15 välillä) on koodattu käyttäen 16 symbolia ASCII- merkistöstä. Vaikka mitä tahansa 16 ASCII -merkistön symbolia voidaan käyttää, käytännössä ASCII -numerot "0" - "9" ja kirjaimet "A" - "F" (tai pienet "a" - "f") valitaan aina yhdenmukaistamiseksi heksadesimaalilukujen vakiokirjoitusten kanssa.

Base16 -koodauksella on useita etuja:

  • Useimmilla ohjelmointikielillä on jo valmiudet jäsentää ASCII-koodattu heksadesimaali
  • Koska täsmälleen puoli tavua, 4-bittiä on helpompi käsitellä kuin Base32: n ja Base64: n 5 tai 6 bittiä, vastaavasti
  • Symbolit 0-9 ja AF ovat yleismaailmallisia heksadesimaalimerkinnöissä, joten ne on helppo ymmärtää yhdellä silmäyksellä ilman tarvetta luottaa symbolien hakutaulukkoon
  • Monilla suoritinarkkitehtuureilla on omat ohjeet, jotka mahdollistavat pääsyn puolitavuun (toisin sanoen " naposteltavaksi "), mikä tekee laitteistosta tehokkaamman kuin Base32 ja Base64

Base16 -koodauksen tärkeimmät haitat ovat:

  • Tilatehokkuus on vain 50%, koska jokainen 4-bittinen arvo alkuperäisestä datasta koodataan 8-bittisenä tavuna. Sitä vastoin Base32- ja Base64 -koodausten tilahyötysuhde on 63% ja 75%.
  • Mahdollista monimutkaisuutta, kun joudutaan hyväksymään sekä isot että pienet kirjaimet

Base16 -koodauksen tuki on kaikkialla läsnä nykyaikaisessa tietojenkäsittelyssä. Se on perusta W3C- standardille URL-prosenttikoodaukselle , jossa merkki korvataan prosenttiluvulla "%" ja sen Base16-koodatulla lomakkeella. Useimmat nykyaikaiset ohjelmointikielet tukevat suoraan Base16-koodattujen numeroiden muotoilua ja jäsentämistä.

Katso myös

Viitteet