Variabler 101: Kjenne datamaskinen

Dessverre har jeg sett at ikke mange ønsker å lære å programmere dette 2018 🙁 men selv om jeg bare hadde lest min forrige artikkel en person og etter litt tid er i stand til å sende en forpliktelse til et gratis programvareprosjekt, ville jeg være fornøyd med arbeidet mitt 🙂

For de som elsker sikkerhet, lover jeg deg at følgende vil være et innlegg om sikkerhetstester så alle er glade, hvis noen vil lære noe annet (som git, serveradministrasjon, eller jeg ikke vet: p), eller å kommentere noe annet emne som ikke kan besvares på en enkel måte i kommentarfeltet, gi meg beskjed og vi ser hvordan vi kan jobbe med det 😉

Vel, nå hvis vi går til tingene våre, tidligere snakket vi om å skrive, og at dette hadde å gjøre med måten vi lagrer variablene våre på i et program, nå skal vi gjennomgå litt av hva som skjer inni og forhåpentligvis kan det klart nok.

Bits

Jeg tror dette er et tema som jeg alltid berører når jeg skriver om programmering, det er absolutt noe som fascinerer meg og som har hjulpet meg til å forstå mange ting, nå vil jeg prøve å forklare litt hvordan de er, hvordan de blir lest, og hva de er for 🙂

Tenk på en lysbryter, når kretsen er lukket, har vi en 0 på skjermen når vi endrer bryterens posisjon, fordi a 1🙂 enkelt er det ikke?

Nå en 0 og en 1 De kan bety mange ting, alt avhenger av kreativiteten du tar det med, antar at jeg vil vite om noen skal til Nord eller Sør, 1 kan bety nord og 0la oss si at jeg vil vite om noen er en mann eller en kvinne, 1 det kan være en mann og 0, kvinne 🙂. Nå vil jeg vite om denne personen er ung eller gammel (> 22), 0 kan bety ung og 1, høyere. La oss fortsette å forestille oss ... Har du noen kjæledyr? 1 Jeg vil si ja, mens 0 Jeg vil si nei Nå vil jeg at du skal lese følgende linje med meg:

1001

Dette er den korte måten å si ...

Una jóven mujer de no más de 22 años se dirige al norte acompañada de su mascota.

som er veldig forskjellig fra:

0110 o Un hombre con más de 22 años de edad se dirige solo hacia el sur.

Bytes

La oss nå gå et skritt videre, la oss lære å lese byte. En byte er sekvensen på 8 bits, som leses fra høyre til venstre og hver 1 representerer en kraft av 2 hevet til n der n er bitposisjon. Da det høres ut som kinesisk, la oss sette et lite eksempel 🙂

01001011 Vi har denne byten, nå skal vi gå fra høyre til venstre (<-) Jeg skal sette dem fra topp til bunn for å kunne skrive deres betydning:

1: biten når den er i posisjon 0 indikerer at vi har følgende 2 hevet til null eller 2^0. Denne brønnen vi vet tilsvarer 1.

1: den andre biten, nå posisjonen 12^1 som er det samme som å si 2

0: tredje bit ... dette burde være 2^2, men siden den ikke er på, skal vi la den være på 0

1: fjerde bit, 2^3 u 8 ????

0: det samme som 0

0: annet 0

1: nå er vi inne 2^6 o 64

og til slutt 0 , vi vet allerede hva det betyr 🙂 nå skal vi legge til resultatene og sammenligne dem med følgende tabell 🙂 Vi har en 75 så la oss se etter det i kolonnen Desimal og vi får se hva som vises i chariot

Bilderesultat for ascii table

Vi har en K!! Gratulerer, du vet allerede hvordan du leser i binær 🙂 Men den mest sagaistiske har kanskje lagt merke til at vi også har fått et desimaltall, og at det har en grense (når alle verdier er 1) Den grensen finnes i antall 255.

ord

Nå vil mer enn en fortelle meg, men hva om jeg trenger et tall som er større enn 255? eller hvor kan jeg finne andre tegn som japanerne? Svaret er enkelt, la oss sette sammen 2 bytes. Nå som vi har to, er det mulige antall kombinasjoner vi har 2^16 o 65536 mulige utfall, for eksempel 0 er en av disse, er det maksimalt mulig 65535. Ringer det tallet en bjelle til noen? Husker du maksimalt antall porter på et Linux-system? Jeg lar dem lekser 😉

Dobbelt ord & firord

For de mer matematiske er det også spesifikke formater, dobbelt ord inneholder, som mange kanskje allerede har forestilt seg 2 word o 4 bytes (o 32 bits) av informasjon, det samme som å si:

11111111111111111111111111111111 til 0 a 4 294 967 295

På dette punktet vil mange lure på hva som skjer med negative tall, det vil si at de må vurderes et sted, ikke sant? For å kunne lagre et negativt tall, valgte prosessorutviklerne å okkupere den første biten til venstre som en tegnverdi. Dette betyr at hvis den første biten er 0 vi snakker om et positivt tall, men hvis det er det 1 vi har et negativt. Se nå hvorfor bitene er så spesielle at de kan være hva du vil 😀

Men dette etterlater oss åpenbart en posisjon mindre til å gjøre multiplikasjonen! Så vår0 a 4 294 967 295 blir til:

-2,147,483,648 a +2,147,483,647

Nå har mange av oss allerede gjort det 64 bits, og dette er verdien av a firord, kan vi ha verdier fra 0 a 18 446 744 073 709 551 615. Det er et stort tall 🙂

Hvorfor 8 bit?

Dette er noe mer enn man lurer på, og svaret ligger i maskinvaren. Fra begynnelsen trengte prosessorer data for å kunne utføre operasjoner. Dataene lagres i minnet på datamaskinen, og hver gang prosessoren krever det, bruker de databussene for å få det. I eldgamle tider kunne disse bussene kommunisere maksimalt 8 bits per syklus, dette betyr at den maksimale og mest effektive måten å flytte data på var å gruppere 8 bits og sende dem til prosessoren.

Med tidens gang, frem til i dag, har prosessorer utviklet evnen til å flytte 16 bits, 32 bits og ... 64 bits.

Hva har det med skriving å gjøre?

Vi er nå på den delen der alt er fornuftig 🙂 Skriving er en egenskap som programmeringsspråk bruker for å gi navn til disse minneområdene. Alle variablene har sin motstykke i en av disse typer data, uansett hva de heter. Disse er kjent som primitive datatyperHvert sterkt skrevet språk har sin oppfatning av disse verdiene, og mengden de representerer. For eksempel i C har vi biblioteket limits.h som viser oss den maksimale og minste mengden primitive verdier.

La oss se hva som skjer hvis vi prøver å bryte en av verdiene:

Egen. Christopher Diaz Riveros

Til høyre har vi verdiene til filen limits.h og til venstre har vi tatt en av disse verdiene (unsigned short int) og vi har tildelt et tall som er høyere enn det tilsvarende. Som et resultat advarer kompilatoren oss om at vi misbruker hukommelse fordi den binære formen av 66666 kan ikke passe i den binære formen av 65535. Dette fører oss til en leksjon i ytelse når vi programmerer, hvis verdien din ikke kommer til å vokse mye over tid, eller hvis du ikke trenger verdier så store som verdiene til en dobbelt o firordVed å bruke riktig type reduseres mengden minne som CPU krever, noe som innebærer en større hastighet for å skaffe data hvis det er godt beregnet.

På tolkesiden er dette lettere på grunn av implisitte konverteringer. CNår vi definerer en variabel på språk som javascript eller Python, er tolken ansvarlig for å forstå hvilken type det er, og tildele nok minneplass til å utføre operasjonene. La oss se et enkelt eksempel 🙂

Egen. Christopher Diaz Riveros

Som du kan se, trenger vi ikke å forklare pythontolken typen variabelen vår, fordi den har ansvaret for å tilordne en type og lagre den i minnet 🙂

Kjenn variablene dine

Dette avhenger av språket og typen implementering du skal bruke, men det første trinnet for å kunne programmere er å lære variablene du kan bruke 🙂 Når du forstår variablene, vil du være i stand til å bruke dem effektivt og logisk for å lagre informasjon (levert av en bruker eller av systemet). Dette er det første trinnet på programmeringsstigen, og forhåpentligvis vil du etter å ha lest denne artikkelen få en bedre forståelse av hvordan datamaskinen din fungerer og hvordan den lagrer informasjon. Det vil være med meg til neste artikkel, husk å legge igjen kommentarene dine for å se om du må forsterke eller kommentere noe spesifikt punkt. Jubel


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   Luis sa

    Godt skrevet, kortfattet og tydelig, samtidig interessant for alle publikum. Fin jobb.

    1.    ChrisADR sa

      Tusen takk, hilsen 🙂

  2.   Johannes Jesus sa

    Flott forklaring. Du er en maskin.

    1.    ChrisADR sa

      Takk

  3.   Ruben sa

    Veldig godt forklart takk

    1.    ChrisADR sa

      Takk til deg for at du leste den i sin helhet 🙂

  4.   Diego sa

    Utmerket, takk for innspillet. Og ved å dra nytte av det binære problemet, er det en mulighet for at du kan gi oss en klasse med IP, subnett, etc. Jeg forstår at det ikke er et programmeringsproblem, men en god forklaring på det problemet har alltid ventet.
    Igjen, takk for forklaringen din

    1.    ChrisADR sa

      Hei Diego, det kan gjøres 🙂 for å fortelle sannheten. Jeg har ikke gått mye inn i emnet heller, men det er ingen bedre måte å undersøke enn å lete etter noe å dele om det i en artikkel 🙂 Vi vil la det stå på listen fordi neste innlegg allerede har et emne og det kommer til å takle herding. Hilsen 🙂

  5.   Pedro sa

    Du er en utmerket lærer, og veldig sjenerøs for å lære det du vet. Gratulerer og takk.

    1.    ChrisADR sa

      Tusen takk Pedro 🙂 Jeg leter fremdeles etter steder å undervise, dessverre her i Peru er det vanskelig når du bare har en teknisk fagutdannelse, så nå ser jeg på muligheten for å fortsette universitetsstudiene her eller hvor jeg kan eller til og med søke på en mastergrad utlendingen, hvem vet, snart blir noe slikt gitt 🙂 men definitivt undervisning er noe som gjør dagen min 🙂 Hilsen

  6.   noe sa

    Jeg hadde ikke lest en bedre forklaring på emnet, det første eksemplet er strålende

    Selv om jeg ikke hadde hørt det ordet (som 16-bits variabler), dobbeltord eller firord

    uansett at "Jeg programmerer allerede", innleggene er interessante. Hvis det skal være noe problem, er innlegget å bruke C (limit.h) som et eksempel på variable størrelser, C har minst spesifikasjon som eksisterer

    1.    ChrisADR sa

      Hei noe 🙂 tusen takk, jeg kom opp med eksemplet på vei 😛 fordi det absolutt er kjent data for de som har lest litt av Assembly, og det er det prosessoren forstår 🙂 hahaha absolutt C er ikke veldig spesifikk, men jeg tror det er på grunn av det faktum at bærbarhet og de forskjellige arkitekturene den støtter har vært så varierte at C må imøtekomme hver type prosessor for å være virkelig bærbar 🙂
      Hilsen og takk for deling.

  7.   Sergio sa

    Unnn det ville vært interessant om denne serien av opplæringsprogrammer var basert på rust, jeg tror det er et av de mest interessante språkene som utvikles i dag.
    Jeg står bak ham, men jeg anerkjenner at det er et vanskelig språk, men med en stor fremtid ...
    Jeg ser frem til de neste artiklene dine, de er veldig interessante.
    Hilsener.

    1.    ChrisADR sa

      Hei Sergio, det ville absolutt være interessant, jeg har hørt at GNOME planlegger å implementere Rust i programserien sin, jeg har ennå ikke sett hele omfanget av det, men en migrasjon kommer.
      Når det gjelder språk, lærer jeg personlig fremdeles C, jeg vil kunne begynne å utvikle meg i kjernen de neste månedene, og jeg foretrekker å lære noen få språk i dybden før jeg begynner å gjennomgå nye, men jeg kan definitivt lete etter noe interessant og gjøre noen eksempler i Rust, siden dokumentasjonen ser ganske bra ut alene.
      Hilsen og takk for delingen 🙂

  8.   David sa

    Veldig gode forklaringer, både i denne artikkelen og i den forrige. Jeg håper du fortsetter med dette temaet som jeg synes er veldig interessant.

    1.    ChrisADR sa

      Hei David, jeg håper også å fortsette å skrive og spesielt motivere folk til å delta med gratis programvare. Det er så mange prosjekter og behov nå at å ha noen ekstra hender å utvikle ville være bra
      Hilsen

  9.   Mart sa

    Kan du lage et innlegg om Turing-maskinen?

    1.    ChrisADR sa

      Hei Mart 🙂 Jeg tror at vi i en eller annen kommentar har berørt det før, ikke sant? Jeg er sikker på at jeg kan sette sammen noe interessant om emnet 🙂 la oss se hva som kan komme ut. Hilsen og takk for at du har lest alle artiklene mine, fra første dag til i dag har jeg alltid sett deg ganske interessert 🙂

  10.   ALLAN LARA sa

    Wow, tusen takk for en god forklaring.

    Hilsen

    1.    ChrisADR sa

      Tusen takk Allan 🙂 hilsen

  11.   ramon hidalgo sa

    Jeg leste forrige innlegg! Tusen takk for forklaringen, selv om jeg tror at jeg aldri vil bli ferdig med å forstå ordet.

    1.    ChrisADR sa

      Hei Ramon 🙂 tusen takk for at du leser begge deler. Hvis det er til nytte, er «ordet» utviklingen av en byte, det er som prosessorer, før det var 8-bits, etter 16-bits, etc ... dette er fordi hver gang vi trenger mer plass til å behandle og bedre hastighetskraft ... "ordet" ble født fordi "byte" -området kom til kort, og det samme med "dobbelt" og "quad" -ordet 🙂 det er den naturlige evolusjonen som får oss til å legge til kraft og plass å fortsette å utvikle 🙂

      Hilsen

  12.   anonym sa

    Dette 2018 lærer jeg å programmere ja eller ja, takk

    1.    ChrisADR sa

      Jeg er glad 🙂 prøv hardt !! Jubel

  13.   Bill sa

    Tusen takk, fortsett det. Jeg vet allerede hvordan jeg skal programmere, men jeg håper at læren din er at min selvlærte programmering er full av dårlig praksis.

    1.    ChrisADR sa

      Takk Guillermo 🙂 Vel, jeg håper du finner interessante ting også i de følgende innleggene 🙂 Hilsen

  14.   Edgar sa

    En enkel forklaring er alltid den beste .. utmerket ..
    Jeg vil foreslå git ... for programmerere er det grunnleggende når du vil jobbe som et team og sette arbeidet ditt i orden .. versjonene ..

    1.    ChrisADR sa

      Veldig sant Edgar, jeg vil prøve å legge ut innhold om det, selv om det er ganske vanskelig å si noe nytt fordi git-dokumentasjonen allerede er rikelig og flere ting allerede er oversatt til flere språk. Jeg får se hva jeg kan gjøre, hilsener og takk for at du delte

  15.   tiririri sa

    Hei, tilsvarer tallet 0 til 18 446 744 073 709 551 615-bit desimalverdien, eller refererer det til en annen verdi? Vel, når du beregner kraften til 64 ^ 2, er resultatet jeg får: 64 18 446 744 073 709.

    1.    ChrisADR sa

      Hei Tiririri, jeg tror du har et avrundingsproblem, du kan prøve å bruke kommandoen bc? er et programmeringsspråk designet for å være så presist som mulig, en gang inne i det trenger du bare å gjøre 2^64, kanskje det løser det 🙂 gi meg beskjed om hvordan det gikk, hilsener

      . Den virkelige verdien er 18 446 744 073 709 551, men vi trekker fra 616 fordi 1 teller som en mulig verdi 🙂

      1.    tiririri sa

        Takk, jeg beregnet det med en kraftkalkulator som jeg fant på nettet (https://es.calcuworld.com/calculadoras-matematicas/potencias/) og det var resultatet det ga meg.
        Og ja, jeg har allerede prøvd bc-kommandoen, og den gir meg effektivt verdien du skrev ned.

  16.   tiririri sa

    Hei igjen, bildet der du refererer til grensene. H-biblioteket er veldig lite og kan ikke leses (i det minste kunne jeg ikke lese det, for det ser jeg ut til at alle gjorde), og siden jeg ikke forstår det, fortsetter jeg ikke lenger lesning. Jeg vet ikke om du kunne endre det, håper jeg ikke bry deg om det.

    1.    ChrisADR sa

      Du kan prøve mobilversjonen, de ser litt tydeligere ut, det er et wordpress-tema: / på den annen side finner du alle C-overskriftene i / usr / inkluderer /, i dette tilfellet kan du velge å lese den direkte hvis du det er lettere 🙂 Jeg prøver å laste opp et større bilde for å se om det hjelper 🙂

      1.    tiririri sa

        Takk, jeg tror jeg burde være tålmodig med dette, he he.

  17.   Katekyo sa

    Takk for artikkelen, for nå forsto jeg litt bedre variablene og spekteret av representasjon av et språk, men nå tror jeg at jeg burde begynne å bruke biblioteket "stdint.h" siden de anbefaler det å bruke når jeg programmerer i c siden en Jeg hadde lært den gamle skolen siden hukommelsen var dyrebar, og man måtte være forsiktig med det som ble brukt

    1.    ChrisADR sa

      Det er ingen Katekyo, det er absolutt bedre å bruke standardbiblioteket, men jeg kan forsikre deg om at det er bedre å vite hva som skiller en uint_least8_t fra en uint_fast8_t og som oppnås ved å kjenne til de primitive datatypene, som var målet med innlegget 🙂 Mange takk for kommentaren og for å lese artikkelen, hilsener

  18.   victor sa

    : Eller en mesterlig forklaring! Jeg kjente deler av konseptene, men jeg får mye ny kunnskap fra dette innlegget

    1.    ChrisADR sa

      Tusen takk Victor 🙂 hvor bra at artikkelen kan være til hjelp, hilsener

  19.   Guille sa

    Jeg likte veldig godt Python for å gjøre programmeringen enklere, jeg så et kurs i http://zetcode.com/gui/pyqt4/ Jeg elsket den siste tetris av: http://zetcode.com/gui/pyqt4/thetetrisgame/
    Jeg retusjerte denne tetris i løpet av en sommer for å sette poeng, flerspiller og musikk, litt etter litt, men veldig underholdende.

    1.    ChrisADR sa

      Hei Guille, det er absolutt veldig underholdende å se programvaren du jobber med vokse litt etter litt 🙂 det er en enestående opplevelse, og enda mer når noen finner det du utvikler nyttig, det vil si fra en annen verden 😀 tusen takk for at du delte 🙂

      1.    Guille sa

        Den jeg gjorde, har jeg lastet opp (30 MB for musikken) til http://guillermo.molleda.com/Tetris9.7z
        Du må konfigurere en annen starthastighet for hver spiller, eller hvis du starter poengene på nytt etter et nytt spill,…, og det er tre spillere som mine to døtre kan spille med meg. Det er til og med vanedannende.