Indholdsfortegnelse:
Video: Exploring JavaScript and the Web Audio API by Sam Green and Hugh Zabriskie 2025
C ++-variabler lagres internt som såkaldte binære tal. Binære tal gemmes som en sekvens af 1 og 0 værdier kendt som bits. Det meste af tiden behøver du ikke rigtig at håndtere tal på bitniveauet; dog er der lejligheder, når det gør det praktisk. C ++ giver et sæt operatører til dette formål.
De såkaldte bitwise logiske operatører opererer på deres argumenter på bitniveauet. For at forstå, hvordan de fungerer, skal du undersøge, hvordan computere gemmer variabler.
Decimaltalsystemet
De tal, du kender til, kaldes decimaler , fordi de er baseret på nummeret 10. Generelt viser programmereren C ++ variabler som decimaltal. Således vil du sige, at værdien af var er 123, for eksempel.
Et tal som 123 henviser til 1 * 100 + 2 * 10 + 3 * 1 . Hvert af disse basetal - 100, 10 og 1 - er en effekt på 10.
123 = 1 * 100 + 2 * 10 + 3 * 1
Udtrykt på en lidt anderledes men ækvivalent måde:
123 = 1 * 10 2 + 2 * 10 1 + 3 * 10 0
Husk at ethvert nummer til nul-effekten er 1.
Andre talesystemer
Brugen af et base nummer på 10 for Tællingsystemet stammer sandsynligvis fra det faktum, at mennesker har 10 fingre, de oprindelige tælleværktøjer. Alternativet ville have været base 20.
Hvis hunde havde opfundet vores nummereringsplan, kan det godt have været baseret på tallet 8 (et ciffer i hver pot er ude af syne på benets bagside). Et sådant oktal system ville have fungeret lige så godt:
123 10 = 1 * 8 2 + 7 * 8 1 + 3 * 8 0 = 173 8
Den lille 10 og 8 henviser her til nummereringssystemet, 10 for decimal (base 10) og 8 til oktal (base 8). Et tælle system kan bruge en hvilken som helst positiv base.
Det binære talesystem
Computere har stort set to fingre. (Måske er det derfor computere der er så dumme: Uden en modstandsdygtig tommelfinger kan de ikke forstå noget. Og så igen, måske ikke.) Computere foretrækker at tælle ved hjælp af base 2. Nummeret 123 10 ville blive udtrykt som:
123 10 = 0 * 128 + 1 * 64 + 1 * 32 + 1 * 16 + 1 * 8 + 0 * 4 + 1 * 2 + 1 * 1
= 01111011 < 2 Det er altid konvention at udtrykke binære tal ved at bruge 4, 8, 32 eller 64 binære cifre, selvom de førende cifre er nul. Dette er også på grund af den måde, hvorpå computere er bygget internt.
Da udtrykket
ciffer refererer til et flertal på ti, kaldes et binært tal en bit . Udtrykket stammer fra binær (b-) ciffer (-it).Otte bits udgør en byte. Et ord er normalt enten to eller fire bytes. Med en sådan lille base er det nødvendigt at bruge et stort antal bits til at udtrykke tal. Det er ubelejligt at anvende et udtryk som 01111011
2 for at udtrykke en sådan dagligdags værdi som 123 10 . Programmører foretrækker at udtrykke tal ved enheder af bytes eller otte bits. En enkelt firebits-ciffer er i det væsentlige base 16, fordi fire bits kan udtrykke sig til en hvilken som helst værdi fra 0 til 15. Basis 16 er kendt som
hexadecimalt tællesystem. Hexadecimal er ofte kontraheret til simpelthen hex. Hexadecimal bruger de samme tal for tallene 0 til 9. For cifrene mellem 9 og 16 anvender hexadecimal de første seks bogstaver i alfabetet: A for 10, B for 11 og så videre. Således bliver 123
10 7B 16 . 123 = 7 * 16
1 + B (dvs. 11) * 16 0 = 7B 16 Fordi programmører foretrækker at udtrykke tal i 4, 8, 32 eller 64 bit, foretrækker de ligeledes at udtrykke hexadecimale tal i 1, 2, 4 eller 8 hexadecimale cifre, selv når de førende cifre er 0.
Endelig er det ubelejligt at udtrykke et hexadecimalt tal som 7B < 16
ved hjælp af et abonnement, fordi terminaler ikke understøtter abonnementer. Selv på et tekstbehandlingsprogram er det ubelejligt at ændre skrifttyper til og fra abonnenttilstand bare for at skrive to cifre. Derfor bruger programmører konventionen til at starte et hexadecimalt tal med en 0x (grunden til en sådan mærkelig overbevisning går tilbage til de tidlige dage af C). Således bliver 7B 0x7B. Ved brug af denne konvention er 0x7B lig med 123 (mens 0x123 svarer til 291.) Alle de matematiske operatorer kan udføres på hexadecimale tal på samme måde som de anvendes til decimaltal. Årsagen til, at vi ikke kan udføre en multiplikation som 0xC * 0xE i vores hoveder, har mere at gøre med de multiplikationstabeller, vi lærte i skolen, end på nogen begrænsning i talesystemet.