Variabler 101: Att känna till din dator

Tyvärr har jag sett att inte många vill lära sig att programmera det här 2018 🙁 men även om jag bara hade läst min tidigare artikel en person och efter lite tid kan skicka ett åtagande till ett gratis mjukvaruprojekt skulle jag vara nöjd med mitt arbete 🙂

För dem som älskar säkerhet lovar jag er att följande kommer att vara ett inlägg om säkerhetstips så att alla är glada, om någon vill lära sig något annat (som git, serveradministration, eller jag vet inte: p), eller kommentera något annat ämne som inte lätt kan besvaras i kommentarrutan, låt mig veta så kan vi se hur vi kan arbeta med det 😉

Tja, nu om vi går till vår sak, tidigare pratade vi om att skriva, och att detta hade att göra med det sätt på vilket vi sparar våra variabler i ett program, nu ska vi granska lite av vad som händer inuti och förhoppningsvis det kan vara tydligt nog.

Bits

Jag tror att det här är ett ämne som jag alltid berör när jag skriver om programmering, det är verkligen något som fascinerar mig och som har hjälpt mig att förstå många saker, nu ska jag försöka förklara lite hur de är, hur de läses och vad de är för 🙂

Tänk på en strömbrytare, när kretsen är stängd har vi en 0 på skärmen, när vi ändrar omkopplarens position, eftersom a 1🙂 enkelt är det inte?

Nu en 0 och en 1 De kan betyda många saker, det beror helt på kreativiteten som du tar det, antar att jag vill veta om någon ska åka norr eller söder, 1 kan betyda norr och 0, sur 🙂 låt oss säga att jag vill veta om någon är en man eller en kvinna, 1 det kan vara en man och 0, kvinna 🙂. Nu vill jag veta om den här personen är ung eller gammal (> 22), 0 kan betyda unga och 1, högre. Låt oss fortsätta föreställa oss ... Har du några husdjur? 1 Jag skulle säga ja, medan 0 Jag skulle säga nej Nu vill jag att du ska läsa följande rad med mig:

1001

Det här är det korta sättet att säga ...

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

som skiljer sig mycket från:

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

Bytes

Låt oss nu gå ett steg längre, låt oss lära oss hur man läser byte. En byte är sekvensen på 8 bitar som läses från höger till vänster och var och en 1 representerar en kraft av 2 upp till n där n är bitens position. Eftersom det låter som kinesiskt, låt oss sätta ett litet exempel 🙂

01001011 Vi har den här byten, nu ska vi gå från höger till vänster (<-) Jag kommer att lägga dem från topp till botten för att kunna skriva deras mening:

1: biten när den är i position 0 indikerar att vi har följande 2 höjda till noll eller 2^0. Denna brunn som vi vet motsvarar 1.

1: den andra biten, nu positionen 12^1 vilket är detsamma som att säga 2

0: tredje bit ... detta borde vara 2^2, men eftersom det inte är på ska vi lämna det på 0

1: fjärde bit, 2^3 u 8 🙂

0: samma som 0

0: Övrig 0

1: nu är vi inne 2^6 o 64

och slutligen 0 , vi vet redan vad det betyder 🙂 nu ska vi lägga till våra resultat och jämföra dem med följande tabell 🙂 Vi har en 75 så låt oss leta efter det i kolumnen Decimal och vi får se vad som visas i Char

Bildresultat för ASCII-tabell

Vi har en K!! Grattis, du vet redan hur man läser i binär 🙂 Men den mest saga kanske har märkt att vi också har fått ett decimaltal och att det har en gräns (när alla värden är 1) Den gränsen finns i antalet 255.

ord

Nu kommer mer än en att berätta för mig, men tänk om jag behöver ett nummer som är större än 255? eller var kan jag hitta andra karaktärer som japanerna? Svaret är enkelt, låt oss sätta ihop 2 bytes. Nu när vi har två är det möjliga antalet kombinationer vi har 2^16 o 65536 möjliga resultat, såsom 0 är en av dessa, är det högsta möjliga 65535. Ringer det numret en klocka till någon? Kommer du ihåg det maximala antalet portar på ett Linux-system? Jag lämnar dem läxor 😉

Dubbel ord & fyrord

För de mer matematiska finns det också specifika format, dubbelt ord innehåller, som många kanske redan har föreställt sig 2 word o 4 bytes (o 32 bits) av information, samma som att säga:

11111111111111111111111111111111 eller 0 a 4 294 967 295

Vid denna tidpunkt kommer många att undra vad som händer med negativa siffror, det vill säga någonstans de måste övervägas, eller hur? För att kunna lagra ett negativt tal valde processorutvecklarna att uppta den första biten till vänster som ett teckenvärde. Det betyder att om den första biten är 0 vi pratar om ett positivt tal, men om det är 1 vi har ett negativt. Se nu varför bitarna är så speciella att de kan vara vad du vill 😀

Men detta lämnar oss uppenbarligen en position mindre att göra multiplikationen! Så vår0 a 4 294 967 295 blir:

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

Nu har många av oss redan gjort det 64 bits, och detta är värdet på a fyrord, vi kan ha värden från 0 a 18 446 744 073 709 551 615. Det är ett stort nummer 🙂

Varför 8 bitar?

Det här är något som mer än man undrar, och svaret ligger i hårdvaran. Från början behövde processorer data för att kunna utföra operationer. Data lagras i datorns minne och varje gång processorn kräver det använder den databussarna för att hämta det. Under gamla tider kunde dessa bussar kommunicera högst 8 bitar per cykel, det betyder att det maximala och mest effektiva sättet att flytta data var att gruppera 8 bitar och skicka dem till processorn.

Med tiden har processorer fram till idag utvecklat förmågan att flytta 16 bitar, 32 bitar och ... 64 bitar.

Vad har det att göra med att skriva?

Vi är nu på den del där allt är vettigt 🙂 Att skriva är en egenskap som programmeringsspråk använder för att namnge dessa minnesutrymmen. Alla variabler har sin motsvarighet i en av dessa typer av data, oavsett vad de heter. Dessa är kända som primitiva datatyperVarje starkt skrivet språk har sin uppfattning om dessa värden och den mängd de representerar. Till exempel i C har vi biblioteket limits.h vilket visar oss den maximala och minsta mängden primitiva värden.

Låt oss se vad som händer om vi försöker bryta ett av värdena:

Egen. Christopher Diaz Riveros

Till höger har vi filens värden limits.h och till vänster har vi tagit ett av dessa värden (unsigned short int) och vi har tilldelat ett nummer högre än motsvarande. Som ett resultat varnar kompilatorn oss om att vi missbrukar minne eftersom den binära formen av 66666 kan inte passa i den binära formen av 65535. Detta leder oss till en lektion i prestanda när vi programmerar, om ditt värde inte kommer att växa mycket över tid eller om du inte behöver värden så stora som ett dubbla o fyrordAtt använda rätt typ minskar mängden minne som begärs av CPU: n, vilket innebär en högre hastighet för att erhålla data om den är väl beräknad.

På tolkens sida är det lättare på grund av implicita omvandlingar. Cnär vi definierar en variabel på språk som javascript eller Python, har tolken ansvaret för att förstå vilken typ det är och allokera tillräckligt med minne för att utföra operationerna. Låt oss se ett enkelt exempel 🙂

Egen. Christopher Diaz Riveros

Som du kan se behöver vi inte förklara för pythontolken typen av vår variabel, eftersom den ansvarar för att tilldela en typ och lagra den i minnet 🙂

Känn dina variabler

Detta beror på språket och typen av implementering som du ska använda, men det första steget för att kunna programmera är att lära sig variablerna som du kan använda 🙂 När du förstår variablerna kommer du att kunna använda dem effektivt och logiskt för att lagra information (förutsatt av en användare eller av systemet). Detta är det första steget på programmeringsstegen och förhoppningsvis efter att ha läst den här artikeln kommer du att få en bättre förståelse för hur din dator fungerar och hur den lagrar information. Det kommer att vara med mig fram till nästa artikel, kom ihåg att lämna dina kommentarer för att se om du måste förstärka eller kommentera någon specifik punkt. Skål


Innehållet i artikeln följer våra principer om redaktionell etik. Klicka på för att rapportera ett fel här.

41 kommentarer, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras.

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   Luis sade

    Välskriven, kortfattad och tydlig, samtidigt intressant för alla publik. Bra jobb.

    1.    ChrisADR sade

      Tack så mycket, hälsningar 🙂

  2.   John Jesus sade

    Bra förklaring. Du är en maskin.

    1.    ChrisADR sade

      Tack

  3.   Ruben sade

    Mycket väl förklarat tack

    1.    ChrisADR sade

      Tack till dig för att du läste den i sin helhet 🙂

  4.   diego sade

    Utmärkt, tack för inmatningen. Och utnyttja den binära frågan finns det en möjlighet att du kan ge oss en IP-klass, subnät etc. Jag förstår att det inte är en programmeringsfråga, men en bra förklaring av den frågan har alltid väntat.
    Återigen, tack för din förklaring

    1.    ChrisADR sade

      Hej Diego, det kan göras 🙂 för att säga sanningen Jag har inte gått in på ämnet heller heller, men det finns inget bättre sätt att undersöka än genom att leta efter något att dela om det i en artikel 🙂 Vi lämnar det för listan för nästa inlägg har redan ett ämne och det kommer att hantera härdning. Hälsningar 🙂

  5.   Peter sade

    Du är en utmärkt lärare och mycket generös för att undervisa vad du vet. Grattis och tack.

    1.    ChrisADR sade

      Tack så mycket Pedro 🙂 Jag letar fortfarande efter platser att undervisa, tyvärr här i Peru är det svårt när du bara har en teknisk yrkesutbildning, så nu tittar jag på möjligheten att fortsätta mina universitetsstudier här eller där jag kan eller till och med ansöka om en magisterexamen i utlänningen, vem vet, kanske snart kan något sådant ges 🙂 men definitivt undervisning är något som gör min dag 🙂 hälsningar

  6.   något sade

    Jag hade inte läst en bättre förklaring av ämnet, det första exemplet är lysande

    även om jag inte hade hört det ordet (som 16-bitars variabler), dubbelord eller fyrord

    Oavsett "redan programmering" är inläggen intressanta. Om det finns något problem är inlägget att använda C (limit.h) som ett exempel på de variabla storlekarna, C har minst specifikation som finns

    1.    ChrisADR sade

      Hej något 🙂 tack så mycket, jag kom med exemplet på vägen 😛 eftersom det verkligen är kända data för dem som har läst lite av Assembly, och det är vad processorn förstår 🙂 hahaha C är verkligen inte särskilt specifik, men jag tror att det är Detta beror på att bärbarheten och de olika arkitekturerna den stöder har varit så varierade att C måste rymma varje typ av processor för att vara riktigt bärbar 🙂
      Hälsningar och tack för delningen.

  7.   Sergio sade

    Unnn det skulle vara intressant om denna serie handledning var baserad på rost, jag tror att det är ett av de mest intressanta språken som utvecklas idag.
    Jag står bakom honom, men jag inser att det är ett svårt språk, men med en stor framtid ...
    Jag ser fram emot dina nästa artiklar, de är riktigt intressanta.
    Hälsningar.

    1.    ChrisADR sade

      Hej Sergio, det skulle verkligen vara intressant, jag har hört att GNOME planerar att implementera Rust inom sin programserie, jag har ännu inte sett hela omfattningen av det, men en migration kommer.
      När det gäller språk lär jag mig fortfarande C, jag vill kunna börja utvecklas i kärnan de närmaste månaderna och jag föredrar att lära mig några språk på djupet innan jag börjar granska nya, men jag kan leta definitivt efter något intressant och gör några exempel i Rust, eftersom dess dokumentation ser ganska bra ut på egen hand.
      Hälsningar och tack för att ni delar 🙂

  8.   David sade

    Mycket bra förklaringar, både i den här artikeln och i den tidigare. Jag hoppas att du fortsätter med det här temat som jag tycker är väldigt intressant.

    1.    ChrisADR sade

      Hej David, jag hoppas också kunna fortsätta skriva och särskilt motivera människor att delta med fri programvara, det finns så många projekt och behov nu att det skulle vara bra att ha några extra händer att utveckla 🙂
      hälsningar

  9.   Mart sade

    Kan du göra ett inlägg om Turing-maskinen?

    1.    ChrisADR sade

      Hej Mart 🙂 Jag tror att vi i någon kommentar har berört det tidigare, eller hur? Jag är säker på att jag kan sätta ihop något intressant om ämnet 🙂 låt oss se vad som kan komma ut. Hälsningar och tack för att du läste alla mina artiklar, från första dagen till idag har jag alltid sett dig ganska intresserad 🙂

  10.   ALLAN LARA sade

    Wow, tack så mycket vilken bra förklaring.

    hälsningar

    1.    ChrisADR sade

      Tack så mycket Allan 🙂 hälsningar

  11.   ramon hidalgo sade

    Jag läste ditt tidigare inlägg! Tack så mycket för förklaringen, även om jag tror att jag aldrig kommer att förstå ordet.

    1.    ChrisADR sade

      Hej Ramon 🙂 tack så mycket för att du läste båda. Om det är till någon nytta är "ordet" utvecklingen av en byte, det är som processorerna, innan det fanns 8-bitar, efter 16-bitar, etc ... det beror på att varje gång vi behöver mer utrymme att bearbeta och bättre hastighet eller makt ... "ordet" föddes eftersom "byte" -utrymmet blev kort, och detsamma med "dubbel" och "fyrhjuling" - det är den naturliga utvecklingen som får oss att lägga till kraft och utrymme för att fortsätta utveckla 🙂

      hälsningar

  12.   anonym sade

    Detta 2018 lär jag mig att programmera ja eller ja, tack

    1.    ChrisADR sade

      Jag är glad 🙂 försök hårt !! Skål

  13.   Guillermo sade

    Tack så mycket, fortsätt. Jag vet redan hur man programmerar men jag väntar på din lärdom att min självlärda programmering är full av dåliga metoder.

    1.    ChrisADR sade

      Tack Guillermo 🙂 Jag hoppas att du hittar intressanta saker också i följande inlägg 🙂 Hälsningar

  14.   Edgar sade

    En enkel förklaring är alltid bäst .. utmärkt ..
    Jag skulle föreslå git ... för programmerare är det grundläggande när du vill arbeta som ett team och ordna ditt arbete .. versionerna ..

    1.    ChrisADR sade

      Mycket sant Edgar, jag kommer att försöka lägga upp innehåll om det, även om det är ganska svårt att säga något nytt eftersom git-dokumentationen redan är riklig och flera saker har redan översatts till flera språk. Jag får se vad jag kan göra, hälsningar och tack för att ni delar

  15.   Tiririri sade

    Hej, motsvarar siffran från 0 till 18 446 744 073 709 551 615-bitars decimalvärdet eller hänvisar det till ett annat värde? Beräknar du effekten av 64 ^ 2 blir resultatet jag: 64 18 446 744 073 709 552.

    1.    ChrisADR sade

      Hej Tiririri, jag tror att du har ett avrundningsproblem, du kan försöka använda kommandot bc? är ett programmeringsspråk utformat för att vara så exakt som möjligt, en gång inuti är det bara nödvändigt att göra 2^64, kanske det löser det 🙂 låt mig veta hur det gick, hälsningar

      . Det verkliga värdet är 18 446 744 073 709 551, men vi subtraherar 616 eftersom 1 räknas som ett möjligt värde 🙂

      1.    Tiririri sade

        Tack, jag beräknade det med en kraftkalkylator som jag hittade på nätet (https://es.calcuworld.com/calculadoras-matematicas/potencias/) och det var resultatet det gav mig.
        Och ja, jag har redan testat bc-kommandot och det ger mig det värde som du skrev ner.

  16.   Tiririri sade

    Hej igen, bilden där du hänvisar till limits.h-biblioteket är väldigt liten och kan inte läsas (åtminstone kunde jag inte läsa den, för jag ser att alla gjorde det, verkar det), och eftersom jag inte förstår det Jag fortsätter inte längre läsa. Jag vet inte om du kunde ändra det, jag hoppas att jag inte stör dig med det.

    1.    ChrisADR sade

      Du kan prova mobilversionen, de ser lite tydligare ut, det är ett wordpress-tema: / å andra sidan finns alla C-rubriker i / usr / include /, i det här fallet kan du välja att läsa den direkt om du Det är lättare 🙂 Jag försöker ladda upp en större bild för att se om det hjälper 🙂

      1.    Tiririri sade

        Tack, jag tror att jag borde ha tålamod med det här, he he.

  17.   Katekyo sade

    Tack för artikeln eftersom jag nu förstod lite bättre variablerna och representationsområdet för ett språk och nu tycker jag att jag bör börja använda biblioteket "stdint.h" eftersom de rekommenderar att det används vid programmering i c sedan jag hade lärde sig den gamla skolan eftersom minnet var värdefullt och man måste vara försiktig med vad som användes

    1.    ChrisADR sade

      Det finns ingen anledning för Katekyo, det är verkligen bättre att använda standardbiblioteket, men jag kan försäkra er att det är bättre att veta vad som skiljer en uint_least8_t från en uint_fast8_t och det uppnås genom att känna till de primitiva datatyperna, vilket var målet av inlägget 🙂 Stort tack för kommentaren och för läsningen av artikeln, hälsningar

  18.   victor sade

    : Eller en mästerlig förklaring! Jag kände till en del av koncepten men jag får mycket ny kunskap från det här inlägget

    1.    ChrisADR sade

      Tack så mycket Victor 🙂 hur bra att artikeln kan vara till hjälp, hälsningar

  19.   Guille sade

    Jag gillade verkligen Python för att göra programmeringen enklare, jag såg en kurs i http://zetcode.com/gui/pyqt4/ Jag älskade den sista tetris av: http://zetcode.com/gui/pyqt4/thetetrisgame/
    Denna tetris retuscherade jag under en sommar för att sätta poäng, multiplayer och musik, lite efter lite, men väldigt underhållande.

    1.    ChrisADR sade

      Hej Guille, det är verkligen mycket underhållande att se programvaran du jobbar med växa lite efter lite 🙂 det är en ojämförlig upplevelse, och ännu mer så när någon tycker att det du utvecklar är användbart, det är från en annan värld 😀 tack så mycket för delning 🙂

      1.    Guille sade

        Den jag gjorde laddade jag upp (30 MB för musiken) till http://guillermo.molleda.com/Tetris9.7z
        Du måste konfigurera en annan starthastighet för varje spelare eller om du startar om poäng efter ett nytt spel, ... och det finns tre spelare för mina två döttrar att spela med mig. Det är till och med beroendeframkallande.