Innholdsfortegnelse:
Video: Technology Stacks - Computer Science for Business Leaders 2016 2025
C + + -variabler lagres internt som såkalte binære tall. Binære tall lagres som en sekvens av 1 og 0 verdier kjent som bits. For det meste trenger du ikke å håndtere tall på bitnivået; Det er imidlertid anledninger når det gjøres praktisk. C ++ gir et sett med operatører til dette formålet.
De såkalte bitwise logiske operatørene opererer på sine argumenter på bitnivå. For å forstå hvordan de fungerer, undersøk hvordan datamaskiner lagrer variabler.
desimalnumre
fordi de er basert på nummer 10. Generelt uttrykker programmereren C ++ variabler som desimaltall. Dermed vil du si at verdien av var er 123, for eksempel. Et tall som 123 refererer til 1 * 100 + 2 * 10 + 3 * 1
. Hvert av disse basenumrene - 100, 10 og 1 - er en kraft på 10.
123 = 1 * 10
2
+ 2 * 10 1 + 3 * 10 0 Husk at et hvilket som helst tall til nullstrømmen er 1. Andre tallsystemer
Bruken av et basenummer på 10 for telleverket stammer, med all sannsynlighet, fra det faktum at mennesker har 10 fingre, de opprinnelige telleverktøyene. Alternativet ville ha vært base 20.
Hvis hundene hadde oppfunnet vårt nummereringssystem, kan det godt ha vært basert på tallet 8 (ett siffer i hver pote er ute av syne på baksiden av benet). Et slikt
oktal-system ville 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. (Kanskje det er grunnen til at datamaskiner er så dumme: Uten en motstandsdyktig tommel kan de ikke forstå noe. Og igjen, kanskje ikke.) Datamaskiner foretrekker å telle med base 2. Tallet 123
10
vil bli uttrykt som: 123 10
= 0 * 128 + 1 * 64 + 1 * 32 + 1 * 16 + 1 * 8 + 0 * 4 + 1 * 2 + 1 * 1 = 01111011 < 2 Det er alltid konvensjon å uttrykke binære tall ved å bruke 4, 8, 32 eller 64 binære tall selv om de ledende tallene er null. Dette er også på grunn av måten datamaskiner bygges internt på.
Fordi uttrykket siffer
refererer til et tall på ti, kalles et binært tall en
bit . Begrepet stammer fra binær (b-) siffer (-it).Åtte biter utgjør en byte. Et ord er vanligvis enten to eller fire byte. Med en så liten base, er det nødvendig å bruke et stort antall biter til å uttrykke tall. Det er ubeleilig å bruke et uttrykk som 01111011 2 for å uttrykke en slik verdslig verdi som 123
10 . Programmører foretrekker å uttrykke tall ved enheter av byte, eller åtte biter. Et enkelt, firebitssiffer er i hovedsak base 16, fordi fire biter kan uttrykke seg til en verdi fra 0 til 15. Base 16 er kjent som heksadesimale tellingsystemet. Hexadecimal blir ofte kontraheres til bare
hex. 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 . 123 = 7 * 16 1 + B (dvs. 11) * 16
0 = 7B 16 Fordi programmerere foretrekker å uttrykke tall i 4, 8, 32 eller 64 biter, foretrekker de tilsvarende heksadesimale tall i 1, 2, 4 eller 8 heksadesimale siffer selv når de ledende tallene er 0. Til slutt er det ubeleilig å uttrykke et heksadesimalt tall som 7B < 16 bruker et abonnement, fordi terminaler ikke støtter abonnementer. Selv på et tekstbehandlingsprogram, er det ubeleilig å endre skrifttyper til og fra abonnentmodus bare for å skrive to sifre. Derfor bruker programmererne konvensjonen om å starte et heksadesimalt tall med en 0x (årsaken til en så merkelig overbevisning går tilbake til de tidlige dagene av C). Dermed blir 7B 0x7B. Ved bruk av denne konvensjonen er 0x7B lik 123 (mens 0x123 er lik 291.)
Alle de matematiske operatørene kan utføres på heksadesimale tall på samme måte som de brukes til desimaltall. Grunnen til at vi ikke kan utføre en multiplikasjon som 0xC * 0xE i hodene våre, har mer å gjøre med multiplikasjonstabellene vi lærte på skolen enn på noen begrensninger i talesystemet.
