Innholdsfortegnelse:
Video: Technology Stacks - Computer Science for Business Leaders 2016 2025
C ++-variablene lagres internt som såkalte binære tall. Binære tall lagres som en sekvens av 1 og 0 verdier kjent som biter. Det meste av tiden trenger du ikke å håndtere hvilke spesielle biter du bruker til å representere tall. Noen ganger er det imidlertid praktisk og praktisk å tinker med tall på bitnivået, slik at C ++ gir et sett med operatører for det formålet.
De såkalte bitwise logiske operatørene opererer på sine argumenter på bitnivå. For å forstå hvordan de virker, undersøk først hvordan datamaskiner lagrer variabler.
Desimalnummersystemet
Tallene du har kjent med fra det tidspunktet du først kunne telle på fingrene, er kjent som desimalnumre fordi de er basert på nummer 10. Generelt uttrykker programmereren C ++-variabler som desimaltall. Dermed kan du spesifisere verdien av var som (si) 123, men vurder implikasjonene.
Et tall som 123 refererer til 1 * 100 + 2 * 10 + 3 * 1. Alle disse basenumrene - 100, 10 og 1 - er krefter på 10.
123 = 1 * 100 + 2 * 10 + 3 * 1
123 uttrykt slik:
123 = 1 * 10 < 2 + 2 * 10 1 + 3 * 10 0 Husk at
noe tall til nullstrømmen er 1. Andre tallsystemer
Vel, ok, bruk 10 som grunnlag (eller
base ) av vårt telesystem skyldes trolig de 10 menneskelige fingrene, de opprinnelige telleverktøyene. En alternativ base for et telesystem kan like like har vært 20.
oktal system ha virket like bra: 123
10 = 1 * 8 2 + 7 * 8 1 < + 3 * 8 0 = 173 8 De små 10 og 8 her refererer til nummereringssystemet, 10 for desimal (base 10) og 8 for oktal (base 8). Et tellingssystem kan bruke en hvilken som helst positiv base. Det binære talesystemet
Datamaskiner har i hovedsak to fingre. Datamaskiner foretrekker å telle ved bruk av base 2. Tallet 123
10
vil bli uttrykt på denne måten: 123 10
= 0 * 2 7 + 1 * 2 < 6 + 1 * 2 5 + 1 * 2 4 + 1 * 2 3 + 0 * 2 2 + 1 * 2 1 + 1 * 2 0 123 10 = 0 * 128 + 1 * 64 + 1 * 32 + 1 * 16 + 1 * 8 + 0 * 4 + 1 * 2 + 1 * 1 = 01111011 2 Datakonvensjon uttrykker binære tall ved å bruke 4, 8, 16, 32 eller til og med 64 binære tall, selv om de ledende tallene er 0.Dette er også på grunn av måten datamaskiner bygges internt på. Fordi uttrykket siffer
refererer til et flertall av 10, er et
binært tall kalt en bit (en forkortelse av binærtall >). En byte består av 8 biter. (Kaller et binært tall a byte-it virket ikke som en god ide.) Minne måles vanligvis i byte (som ruller måles i enheter av bakerens dusin). Med en så liten base må du bruke et stort antall biter for å uttrykke tall. Menneskene vil ikke ha bryet med å bruke et uttrykk som 011110112 for å uttrykke en slik verdslig verdi som 123 10
. Programmører foretrekker å uttrykke tall ved å bruke et jevnt antall biter. Det oktale systemet - som er basert på 3 biter - var standard binært system i de tidlige dager av C. Vi ser en vestige av dette selv i dag - en konstant som begynner med en 0 antas å være oktal i C ++. Dermed er linjen: cout << "0173 =" << 0173 << endl; produserer følgende utgang: 0173 = 123
Imidlertid er oktal nesten fullstendig erstattet av
hexadecimal
-systemet, som er basert på 4-bits sifre.
Hexadecimal bruker de samme tallene for tallene 0 til 9. For tallene mellom 9 og 16 bruker hexadecimal de første seks bokstavene i alfabetet: A for 10, B for 11, og så videre. Således blir 123
10 7B 16, slik: 123 = 7 * 16 1 + B (dvs. 11) * 16 0
= 7B 16 Programmerne foretrekker å uttrykke heksadesimale tall i multipler med 4 heksadesimale siffer selv når det ledende sifferet i hvert tilfelle er 0. Til slutt, hvem ønsker å uttrykke et heksadesimalt tall som 7B 16 ved å bruke et abonnement? Terminaler gir ikke engang
support
abonnementer. Selv på et tekstbehandlingsprogram, er det en dra for å endre skrifttyper til og fra abonnementsmodus bare for å skrive to elendige sifre. Derfor bruker programmerere (ingen idioter, de) konvensjonen om å starte et heksadesimalt tall med en 0x. Dermed blir 7B 0x7B. Ved hjelp av denne konvensjonen er det heksadesimale nummer 0x7B lik 123 desimal mens 0x123 heksadesimal er lik 291 desimal. Kodestykket cout << "0x7B =" << 0x7B << endl; cout << "0x123 =" << 0x123 << endl; gir følgende utgang: 0x7B = 123 0x123 = 291
Du kan bruke alle de matematiske operatørene på heksadesimale tall på samme måte som du vil bruke dem til desimaltall.
Hvis du virkelig vil, kan du skrive binære tall i C ++ '14 ved hjelp av prefikset '0b'. Således blir 123 0b01111011.
