Zmienne 101: poznanie komputera

Niestety widziałem, że niewielu chce nauczyć się programowania tego 2018 roku 🙁, ale nawet gdybym tylko przeczytał mój Poprzedni artykuł osoba i po krótkim czasie jest w stanie wysłać zobowiązanie do projektu wolnego oprogramowania, byłbym zadowolony ze swojej pracy 🙂

Dla tych, którzy kochają bezpieczeństwo, obiecuję, że poniżej będzie post o bezpieczeństwie 🙂 więc wszyscy są zadowoleni, jeśli ktoś chce się czegoś innego nauczyć (jak git, administracja serwerem, czy co ja wiem: p), lub skomentować na inny temat, na który nie można łatwo odpowiedzieć w polu komentarza, daj mi znać, a zobaczymy, jak możemy to naprawić 😉

Cóż, teraz, jeśli przejdziemy do rzeczy, wcześniej rozmawialiśmy o pisaniu i że miało to związek ze sposobem, w jaki zapisujemy nasze zmienne w programie, teraz przyjrzymy się trochę temu, co dzieje się w środku i miejmy nadzieję, że tak może być wystarczająco jasne.

Bity

Myślę, że jest to temat, który zawsze poruszam pisząc o programowaniu, na pewno jest to coś, co mnie fascynuje i pomogło mi zrozumieć wiele rzeczy, teraz spróbuję trochę wyjaśnić, jacy są, jak się je czyta i do czego służą 🙂

Pomyśl o włączniku światła, kiedy obwód jest zamknięty, mamy 0 na ekranie, gdy zmieniamy położenie przełącznika, ponieważ a 1🙂 proste, prawda?

Teraz a 0 oraz 1 mogą znaczyć wiele rzeczy, wszystko zależy od kreatywności, z jaką je przyjmujesz, przypuśćmy, że chcę wiedzieć, czy ktoś jedzie na północ, czy na południe, 1 może oznaczać północ i 0, sur 🙂 powiedzmy, że chcę wiedzieć, czy ktoś jest mężczyzną czy kobietą, 1 może to być mężczyzna i 0, kobieta 🙂. Teraz chcę wiedzieć, czy ta osoba jest młoda czy stara (> 22), 0 może oznaczać młody i 1, wyżej. Wyobraźmy sobie… Czy masz jakieś zwierzęta? 1 Powiedziałbym tak, podczas gdy 0 Powiedziałbym nie Teraz chcę, abyś przeczytał ze mną następujący wiersz:

1001

To jest krótki sposób, aby powiedzieć ...

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

który bardzo różni się od:

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

Bajtów

Teraz przejdźmy o krok dalej, nauczmy się czytać bajty. Bajt to sekwencja 8 bitów, które są odczytywane od prawej do lewej i każdy 1 reprezentuje potęgę 2 podniesiony do n gdzie n jest pozycją bitu. Skoro to brzmi jak chiński, dajmy mały przykład 🙂

01001011 Mamy ten bajt, teraz przejdziemy od prawej do lewej (<-) wstawię je od góry do dołu, aby móc zapisać ich znaczenie:

1: bit jest na miejscu 0 wskazuje, że mamy następujące 2 podniesione do zera lub 2^0. Dobrze wiemy, że jest to równoważne 1.

1: drugi bit, teraz pozycja 12^1 co jest tym samym, co mówienie 2

0: trzeci kawałek ... tak powinno być 2^2ale skoro nie jest włączona, wyjdźmy 0

1: czwarty bit, 2^3 u 8 🙂

0: taki sam jak 0

0: inny 0

1: teraz jesteśmy 2^6 o 64

i wreszcie 0 , już wiemy, co to znaczy 🙂 teraz dodamy nasze wyniki i porównamy je z poniższą tabelą 🙂 Mamy 75 więc poszukajmy tego w kolumnie Dziesiętny i zobaczymy, co się pojawi Zwęglać

Wynik obrazu dla tabeli ascii

Mamy jednego K!! Gratulacje, już wiesz, jak czytać binarnie 🙂 Ale najmądrzejsi mogli zauważyć, że otrzymaliśmy również liczbę dziesiętną i że ma ona limit (gdy wszystkie wartości są 1) Ten limit znajduje się w liczbie 255.

słowo

Teraz więcej niż jeden mi powie, ale co jeśli potrzebuję liczby większej niż 255? lub gdzie mogę znaleźć inne postacie, takie jak Japończycy? Cóż, odpowiedź jest prosta, połączmy się 2 bytes. Teraz, gdy mamy dwa, możliwa liczba kombinacji to 2^16 o 65536 możliwe wyniki, takie jak 0 jest jednym z nich, maksymalna możliwa to 65535. Czy ten numer komuś dzwoni? Pamiętasz maksymalną liczbę portów w systemie Linux? Zostawiam im zadanie domowe 😉

Podwójne słowo i poczwórne słowo

Dla bardziej matematycznych istnieją również określone formaty, podwójne słowo zawierać, jak wielu mogło już sobie wyobrazić 2 word o 4 bytes (o 32 bits) informacji, tak samo jak:

11111111111111111111111111111111 lub 0 a 4 294 967 295

W tym momencie wielu będzie się zastanawiać, co się stanie z liczbami ujemnymi, to znaczy, że trzeba je gdzieś rozważyć, prawda? Aby móc zapisać liczbę ujemną, twórcy procesora zdecydowali się zająć pierwszy bit po lewej stronie jako wartość znaku. Oznacza to, że jeśli pierwszy bit to 0 mówimy o liczbie dodatniej, ale jeśli tak jest 1 mamy negatyw. Teraz zobacz, dlaczego te kawałki są tak wyjątkowe, że mogą być czymkolwiek zechcesz 😀

Ale to oczywiście pozostawia nam o jedną pozycję mniej do wykonania mnożenia! Więc nasze0 a 4 294 967 295 staje się:

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

Teraz wielu z nas już to zrobiło 64 bits, a to jest wartość a poczwórne słowomożemy mieć wartości od 0 a 18 446 744 073 709 551 615. To duża liczba 🙂

Dlaczego 8 bitów?

Niejeden będzie się nad tym zastanawiać, a odpowiedź tkwi w sprzęcie. Od samego początku procesory potrzebowały danych, aby móc wykonywać operacje. Dane są przechowywane w pamięci komputera i za każdym razem, gdy procesor ich wymaga, wykorzystuje do ich uzyskania magistrale danych. W dawnych czasach autobusy te mogły przesyłać maksymalnie 8 bitów na cykl, co oznacza, że ​​maksymalnym i najbardziej wydajnym sposobem przenoszenia danych było grupowanie 8 bitów i wysyłanie ich do procesora.

Z biegiem czasu, aż do dzisiaj, procesory rozwinęły zdolność przenoszenia 16 bitów, 32 bitów i… 64 bitów.

Co to ma wspólnego z pisaniem?

Jesteśmy teraz w części, w której wszystko ma sens 🙂 Wpisywanie jest właściwością używaną przez języki programowania do nazywania tych przestrzeni pamięci. Wszystkie zmienne mają swój odpowiednik w jednym z tych typów danych, bez względu na ich nazwę. Są one znane jako prymitywne typy danychKażdy język silnie typizowany ma swoją koncepcję tych wartości i ilości, które reprezentują. Na przykład w C mamy bibliotekę limits.h który pokazuje nam maksymalną i minimalną ilość wartości pierwotnych.

Zobaczmy, co się stanie, jeśli spróbujemy złamać jedną z wartości:

Posiadać. Christopher Diaz Riveros

Po prawej stronie mamy wartości z pliku limits.h a po lewej przyjęliśmy jedną z tych wartości (unsigned short int) i przypisaliśmy numer wyższy niż odpowiadający. W rezultacie kompilator ostrzega nas, że nadużywamy pamięci, ponieważ binarna forma 66666 nie może pasować do binarnej postaci 65535. To prowadzi nas do lekcji jest gwarancją najlepszej jakości, które mogą dostarczyć Ci Twoje monitory, kiedy programujemy, jeśli Twoja wartość nie wzrośnie znacznie w czasie lub jeśli nie potrzebujesz wartości tak dużych jak Podwójna o poczwórne słowoUżycie właściwego typu zmniejsza ilość pamięci żądanej przez procesor, co oznacza wyższą prędkość pobierania danych, jeśli jest dobrze obliczona.

Ze strony tłumacza jest to łatwiejsze dzięki niejawne konwersje. doGdy zdefiniujemy zmienną w językach takich jak javascript lub Python, interpreter jest odpowiedzialny za zrozumienie, jaki to jest typ i przydzielenie wystarczającej ilości pamięci do wykonywania operacji. Zobaczmy prosty przykład 🙂

Posiadać. Christopher Diaz Riveros

Jak widać, nie musimy wyjaśniać interpreterowi Pythona typu naszej zmiennej, ponieważ odpowiada ona za przypisanie typu i przechowywanie go w pamięci 🙂

Poznaj swoje zmienne

Zależy to od języka i typu implementacji, którego będziesz używać, ale pierwszym krokiem do programowania jest nauczenie się zmiennych, których możesz używać 🙂 Po zrozumieniu zmiennych będziesz mógł z nich korzystać sprawnie i logicznie w celu przechowywania informacji (podanych przez użytkownika lub przez system). To jest pierwszy krok na drabinie programowania i miejmy nadzieję, że po przeczytaniu tego artykułu lepiej zrozumiesz, jak działa Twój komputer i jak przechowuje informacje. Będzie ze mną do następnego artykułu, pamiętaj, aby zostawić swoje komentarze, aby zobaczyć, czy musisz wzmocnić lub skomentować jakiś konkretny punkt. pozdrowienia


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Luis powiedział

    Dobrze napisane, zwięzłe i przejrzyste, a jednocześnie interesujące dla wszystkich odbiorców. Dobra robota.

    1.    ChrisADR powiedział

      Bardzo dziękuję, pozdrawiam 🙂

  2.   Jana Jezusa powiedział

    Świetne wyjaśnienie. Jesteś maszyną.

    1.    ChrisADR powiedział

      Dziękuję

  3.   Ruben powiedział

    Bardzo dobrze wyjaśnione dzięki

    1.    ChrisADR powiedział

      Dziękuję za przeczytanie go w całości 🙂

  4.   Diego powiedział

    Doskonale, dzięki za wkład. A korzystając z problemu binarnego, istnieje możliwość, że podasz nam klasę IP, podsieć itp. Rozumiem, że nie jest to kwestia programowania, ale dobre wyjaśnienie tej kwestii zawsze czekało.
    Jeszcze raz dziękuję za wyjaśnienie

    1.    ChrisADR powiedział

      Witaj Diego, da się 🙂 prawdę mówiąc, ja też nie zagłębiałem się zbytnio w ten temat, ale nie ma lepszego sposobu na zbadanie tego, jak szukanie czegoś do podzielenia się w artykule 🙂 Zostawimy to na listę bo następny post już ma temat i zajmie się hartowaniem. Pozdrowienia 🙂

  5.   Piotr powiedział

    Jesteś wspaniałym nauczycielem i jesteś bardzo hojny w nauczaniu tego, co wiesz. Gratulacje i dziękuję.

    1.    ChrisADR powiedział

      Bardzo dziękuję Pedro 🙂 Wciąż szukam miejsc do nauczania, niestety tutaj w Peru jest to trudne, gdy ma się tylko tytuł techniczny, dlatego teraz rozważam możliwość kontynuowania studiów tutaj lub gdzie mogę lub nawet ubiegać się o tytuł magistra na obcokrajowcu, kto wie, może coś takiego wkrótce się wyda 🙂 ale na pewno nauczanie jest czymś, co sprawia mi przyjemność 🙂 Pozdrawiam

  6.   coś powiedział

    Nie czytałem lepszego wyjaśnienia tematu, pierwszy przykład jest genialny

    chociaż nie słyszałem tego słowa (jak zmienne 16-bitowe), podwójnego słowa lub poczwórnego słowa

    bez względu na to, że „już programuję”, posty są interesujące. Jeśli jest jakiś problem, post ma użyć C (limits.h) jako przykład zmiennych rozmiarów, C ma najmniej szczegółową specyfikację, jaka istnieje

    1.    ChrisADR powiedział

      Witam coś 🙂 bardzo dziękuję, po drodze wymyśliłem przykład 😛 bo to na pewno znane dane dla tych, którzy przeczytali trochę asemblera i to właśnie rozumie procesor 🙂 hahaha na pewno C nie jest zbyt konkretny, ale myślę, że to jest spowodowane faktem, że przenośność i różne architektury, które obsługuje, były tak zróżnicowane, że C musi pomieścić każdy typ procesora, aby był naprawdę przenośny 🙂
      Pozdrowienia i podziękowania za udostępnienie.

  7.   Sergio powiedział

    O ile byłoby interesujące, gdyby ta seria samouczków była oparta na rdzeniu, myślę, że jest to jeden z najciekawszych języków, które są obecnie rozwijane.
    Jestem za nim, ale zdaję sobie sprawę, że to trudny język, ale z wielką przyszłością ...
    Nie mogę się doczekać kolejnych artykułów, są naprawdę interesujące.
    Pozdrowienia.

    1.    ChrisADR powiedział

      Witaj Sergio, z pewnością byłoby interesujące, słyszałem, że GNOME planuje zaimplementować Rust w swoim zestawie programów, nie widziałem jeszcze pełnego zakresu, jaki zamierzają, ale nadchodzi migracja.
      Jeśli chodzi o języki, osobiście wciąż uczę się C, chcę móc rozpocząć programowanie w jądrze w ciągu najbliższych kilku miesięcy i wolę dogłębnie nauczyć się kilku języków, zanim zacznę przeglądać nowe, ale mogę na pewno poszukaj czegoś ciekawego i zrób kilka przykładów w Rust, ponieważ jego dokumentacja sama w sobie wygląda całkiem nieźle.
      Pozdrawiamy i dziękujemy za udostępnienie 🙂

  8.   David powiedział

    Bardzo dobre wyjaśnienia, zarówno w tym artykule, jak iw poprzednim. Mam nadzieję, że będziesz kontynuować ten temat, który uważam za bardzo interesujący.

    1.    ChrisADR powiedział

      Cześć David, mam również nadzieję, że będę dalej pisał, a szczególnie motywował ludzi do udziału w wolnym oprogramowaniu, jest teraz tak wiele projektów i potrzeb, że posiadanie kilku dodatkowych rąk do rozwijania byłoby świetne 🙂
      pozdrowienia

  9.   Targowisko powiedział

    Czy mógłbyś napisać o maszynie Turinga?

    1.    ChrisADR powiedział

      Witaj Marcie 🙂 Myślę, że w jakimś komentarzu już go dotykaliśmy, prawda? Jestem pewien, że potrafię ułożyć coś ciekawego na ten temat 🙂 zobaczmy, co wyjdzie. Pozdrawiam i dziękuję za przeczytanie wszystkich moich artykułów, od pierwszego dnia do dnia dzisiejszego zawsze widziałem Cię z dużym zainteresowaniem 🙂

  10.   ALLAN LARA powiedział

    Wow, bardzo dziękuję, co za dobre wyjaśnienie.

    pozdrowienia

    1.    ChrisADR powiedział

      Bardzo dziękuję Allan 🙂 pozdrawiam

  11.   Ramona Hidalgo powiedział

    Przeczytałem twój poprzedni post! Bardzo dziękuję za wyjaśnienie, chociaż myślę, że nigdy nie skończę rozumieć tego słowa.

    1.    ChrisADR powiedział

      Cześć Ramon 🙂 bardzo dziękuję za przeczytanie obu. Jeśli ma to jakiekolwiek zastosowanie, «słowo» jest ewolucją bajtu, podobnie jak procesory, zanim było 8 bitów, po 16 bitach itd.… Dzieje się tak, ponieważ za każdym razem potrzebujemy więcej miejsca, aby proces i lepsza prędkość lub moc ... `` słowo '' narodziło się, ponieważ przestrzeń `` bajtu '' była krótka, podobnie jak słowo `` podwójne '' i `` poczwórne '' 🙂 to naturalna ewolucja, która sprawia, że ​​dodajemy moc i przestrzeń do dalszego rozwoju 🙂

      pozdrowienia

  12.   anonimowy powiedział

    W tym 2018 roku uczę się programować tak lub tak, dziękuję

    1.    ChrisADR powiedział

      Cieszę się, spróbuj bardzo !! pozdrowienia

  13.   Guillermo powiedział

    Dziękuję bardzo, tak trzymaj. Już wiem, jak programować, ale czekam na twoje nauki, że moje programowanie samouka jest pełne złych praktyk.

    1.    ChrisADR powiedział

      Dzięki Guillermo 🙂 Cóż, mam nadzieję, że znajdziesz interesujące rzeczy również w następujących postach 🙂 Pozdrowienia

  14.   Edgar powiedział

    Proste wyjaśnienie jest zawsze najlepsze… doskonałe…
    Proponuję git ... dla programistów to podstawa, gdy chcesz pracować jako zespół i uporządkować swoją pracę .. wersje ..

    1.    ChrisADR powiedział

      Bardzo prawda Edgarze, spróbuję zamieścić treści na ten temat, chociaż dość trudno powiedzieć coś nowego, ponieważ dokumentacja gita jest już bogata i kilka rzeczy jest już przetłumaczonych na kilka języków. Zobaczę co da się zrobić, pozdrawiam i dziękuję za udostępnienie

  15.   tiririri powiedział

    Witam, czy liczba od 0 do 18 446 744 073 709 551 615 odpowiada 64-bitowej wartości dziesiętnej, czy też odnosi się do innej wartości? No cóż, obliczając potęgę 2 ^ 64 otrzymuję wynik: 18 446 744 073 709 552 000.

    1.    ChrisADR powiedział

      Cześć Tiririri, myślę, że masz problem z zaokrągleniem, możesz spróbować użyć polecenia bc? to język programowania zaprojektowany tak, aby był jak najbardziej precyzyjny, wystarczy, że gdy się w nim znajdzie 2^64, może to rozwiąże problem 🙂 dajcie znać jak poszło, pozdrawiam

      . Rzeczywista wartość to 18 446 744 073 709 551, ale odejmujemy 616, ponieważ 1 liczy się jako możliwa wartość 🙂

      1.    tiririri powiedział

        Dzięki, obliczyłem to za pomocą kalkulatora mocy, który znalazłem w sieci (https://es.calcuworld.com/calculadoras-matematicas/potencias/) i to był wynik, jaki mi dał.
        I tak, wypróbowałem już polecenie bc i skutecznie daje mi zapisaną przez Ciebie wartość.

  16.   tiririri powiedział

    Witam jeszcze raz, obraz, na którym odwołujesz się do limitów. H biblioteka jest bardzo mała i nie można jej odczytać (przynajmniej nie mogłem tego przeczytać, ponieważ widzę, że wszyscy to robili, wydaje się), a ponieważ tego nie rozumiem Już nie czytam. Nie wiem, czy mógłbyś to zmienić, mam nadzieję, że ci tym nie przeszkadzam.

    1.    ChrisADR powiedział

      Możesz wypróbować wersję mobilną, te wyglądają nieco wyraźniej, to motyw WordPress: / z drugiej strony wszystkie nagłówki C można znaleźć w / usr / include /, w tym przypadku możesz przeczytać je bezpośrednio, jeśli to prostsze 🙂 Spróbuję przesłać większy obraz, aby zobaczyć, czy to pomoże

      1.    tiririri powiedział

        Dzięki, myślę, że powinienem być cierpliwy, heh heh.

  17.   Katekyo powiedział

    Dziękuję za artykuł, ponieważ teraz trochę lepiej zrozumiałem zmienne i zakres reprezentacji języka, a teraz myślę, że powinienem zacząć używać biblioteki "stdint.h", ponieważ zalecają jej używanie podczas programowania w c, ponieważ miałem uczono starej szkoły, ponieważ pamięć była cenna i trzeba było uważać na to, co zostało użyte

    1.    ChrisADR powiedział

      Nie ma powodu dla Katekyo, na pewno lepiej jest skorzystać z biblioteki standardowej, ale zapewniam, że lepiej jest wiedzieć, co odróżnia uint_least8_t od uint_fast8_t, a to osiąga się znając prymitywne typy danych, które były celem postu 🙂 Bardzo dziękuję za komentarz i za przeczytanie artykułu, pozdrawiam

  18.   zwycięzca powiedział

    : Albo mistrzowskie wyjaśnienie! Znałem część koncepcji, ale z tego postu otrzymałem wiele nowej wiedzy

    1.    ChrisADR powiedział

      Dziękuję bardzo Victor jak dobrze, że artykuł może być pomocny, pozdrawiam

  19.   Guille powiedział

    Naprawdę polubiłem Pythona, aby ułatwić programowanie, widziałem kurs http://zetcode.com/gui/pyqt4/ Uwielbiałem ostatnie tetris: http://zetcode.com/gui/pyqt4/thetetrisgame/
    Retuszowałem tego tetrisa latem, aby stopniowo wprowadzać punkty, tryb dla wielu graczy i muzykę, ale bardzo zabawne.

    1.    ChrisADR powiedział

      Witaj Guille, z pewnością bardzo zabawne jest obserwowanie, jak oprogramowanie, nad którym pracujesz, stopniowo się rozwija 🙂 jest to niezrównane doświadczenie, a tym bardziej, gdy ktoś uzna to, co tworzysz, pożyteczne, czyli z innego świata 😀 bardzo dziękuję za udostępnianie 🙂

      1.    Guille powiedział

        Ten, który zrobiłem, przesłałem (30 MB dla muzyki) do http://guillermo.molleda.com/Tetris9.7z
        Musisz skonfigurować inną prędkość początkową dla każdego gracza lub jeśli ponownie uruchomisz punkty po nowej grze,… i jest trzech graczy, dla których moje dwie córki będą ze mną grać. To nawet uzależnia.