Змінні 101: Знання вашого комп’ютера

На жаль, я побачив, що не багато хто хоче навчитися програмувати цей 2018 🙁, але навіть якби я прочитав лише свій попередня стаття людина і через трохи часу зможе надіслати комісію до проекту вільного програмного забезпечення, я був би задоволений своєю роботою 🙂

Для тих, хто любить безпеку, я обіцяю вам, що далі буде допис про завдання безпеки, тому всі будуть раді, якщо хтось хоче навчитися чомусь іншому (наприклад, git, адміністрування сервера або я не знаю: p), або прокоментуйте якусь іншу тему, на яку неможливо легко відповісти у полі для коментарів, дайте мені знати, і ми побачимо, як ми можемо з цим працювати 😉

Що ж, тепер, якщо ми перейдемо до нашої справи, раніше ми говорили про введення тексту, і що це було пов’язано зі способом збереження наших змінних у програмі, тепер ми розглянемо трохи того, що відбувається всередині, і, сподіваємось, це може бути досить зрозумілим.

біти

Я думаю, що це тема, яку я завжди зачіпаю, коли пишу про програмування, це, безумовно, щось мене захоплює і що допомогло зрозуміти багато речей, зараз я спробую трохи пояснити, як вони, як їх читають і для чого вони 🙂

Подумайте про вимикач світла, коли ланцюг замикається, ми маємо 0 на екрані, коли ми змінюємо положення перемикача, оскільки a 1🙂 просто чи не так?

Зараз a 0 і 1 Вони можуть означати багато речей, все залежить від творчості, з якою ви це сприймаєте, припустимо, я хочу знати, хтось їде на Північ чи Південь, 1 може означати північ і 0, sur 🙂 скажімо, я хочу знати, хтось чоловік чи жінка, 1 це може бути чоловік і 0, жінка 🙂. Тепер я хочу знати, молода людина чи стара (> 22), 0 може означати молодий і 1, вище. Давайте продовжувати уявляти ... Чи є у вас домашні тварини? 1 Я б сказав так, поки 0 Я б сказав, що ні Тепер я хочу, щоб ви прочитали зі мною наступний рядок:

1001

Це короткий спосіб сказати ...

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

що сильно відрізняється від:

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

байтів

Тепер підемо на крок далі, навчимося читати байти. Байт - це послідовність 8 бітів, які зчитуються справа наліво та кожен 1 представляє силу 2 піднято до n де n - положення біта. Оскільки це звучить як китайська, давайте наведемо невеликий приклад 🙂

01001011 У нас є цей байт, тепер ми будемо рухатися справа наліво (<-) Я збираюся помістити їх зверху вниз, щоб мати можливість записати їх значення:

1: біт у положенні 0 вказує на те, що у нас є наступні 2 підняті до нуля або 2^0. Це добре відомо, що еквівалентно 1.

1: другий біт, тепер позиція 12^1 що те саме, що сказати 2

0: третій біт ... це повинно бути 2^2, але оскільки це не ввімкнено, залишмо це 0

1: четвертий біт, 2^3 u 8 🙂

0: такий же як і 0

0: інший 0

1: зараз ми в 2^6 o 64

і нарешті 0 , ми вже знаємо, що це означає 🙂 тепер ми збираємося додати наші результати та порівняти їх із наступною таблицею 🙂 У нас є 75 тож давайте шукати це в колонці Десятковий і ми побачимо, що з’явиться в колісниця

Результат зображення для таблиці ascii

У нас є одна K!! Вітаємо, ви вже знаєте, як читати в двійковому вигляді 🙂 Але найпроникливіший, можливо, помітив, що ми також отримали десяткове число і що воно має межу (коли всі значення 1) Ця межа знаходиться в кількості 255.

слово

Зараз мені скажуть не один, але що, якщо мені знадобиться число більше, ніж 255? або де я можу знайти інших символів, таких як японські? Ну відповідь проста, давайте разом 2 bytes. Тепер, коли у нас є дві, можлива кількість комбінацій у нас є 2^16 o 65536 можливі результати, такі як 0 є одним із таких, максимально можливим є 65535. Цей номер комусь дзвонить? Пам'ятаєте максимальну кількість портів в системі Linux? Я залишаю їм домашнє завдання 😉

Подвійне слово & чотирикутник

Для більш математичних існують також специфічні формати, подвійне слово містять, як багато хто вже міг собі уявити 2 word o 4 bytes (o 32 bits) інформації, те саме, що сказати:

11111111111111111111111111111111 або де- 0 a 4 294 967 295

У цей момент багато хто задаватиметься питанням, що відбувається з від’ємними числами, тобто їх потрібно десь споглядати, правда? Для того, щоб мати можливість зберігати від’ємне число, розробники процесорів вирішили зайняти перший біт зліва як знакове значення. Це означає, що якщо перший біт є 0 ми говоримо про додатне число, але якщо воно є 1 маємо негатив. А тепер подивіться, чому біти такі особливі, вони можуть бути будь-якими you

Але це, очевидно, залишає нам одну позицію менше, щоб робити множення! Отже наш0 a 4 294 967 295 стає:

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

Зараз у багатьох з нас це вже є 64 bits, і це значення a чотирикутне слово, ми можемо мати значення від 0 a 18 446 744 073 709 551 615. Це велике число 🙂

Чому 8 біт?

Це те, що може задаватися питанням не одному, і відповідь полягає в апаратному забезпеченні. З самого початку процесори потребували даних, щоб мати можливість виконувати операції. Дані зберігаються в пам’яті комп’ютера, і кожного разу, коли процесор цього вимагає, він використовує шини даних для їх отримання. У давнину ці шини могли передавати максимум 8 біт за цикл, це означає, що максимальним і найефективнішим способом переміщення даних було групування 8 бітів і їх відправка в процесор.

З плином часу, до сьогоднішнього дня, процесори розробили здатність переміщувати 16 біт, 32 біти і ... 64 біти.

Яке відношення це має до набору тексту?

Зараз ми перейшли до тієї частини, де все це має сенс. Ping Введення тексту - це властивість, яку мови програмування використовують для іменування цих просторів пам'яті. Усі змінні мають аналог в одному з цих типів даних, незалежно від того, як вони називаються. Вони відомі як примітивні типи данихКожна сильно набрана мова має свою концепцію цих цінностей та їх кількість. Наприклад, в C ми маємо бібліотеку limits.h що показує нам максимальну та мінімальну кількість примітивних значень.

Давайте подивимося, що станеться, якщо ми спробуємо зламати одне зі значень:

Власний. Крістофер Діас Ріверос

Праворуч ми маємо значення файлу limits.h і зліва ми взяли одне з цих значень (unsigned short int), і ми призначили номер, що перевищує відповідний. В результаті компілятор попереджає нас про те, що ми зловживаємо пам'яттю через двійкову форму 66666 не може поміститися в двійковій формі 65535. Це веде нас до уроку в продуктивність коли ми програмуємо, якщо ваше значення не буде сильно зростати з часом, або якщо вам не потрібні такі величини, як значення подвійний o чотирикутне словоВикористання правильного типу зменшує обсяг пам'яті, запитуваний процесором, що передбачає більш високу швидкість отримання даних, якщо вони добре розраховані.

З боку перекладача це простіше завдяки неявні перетворення. C.тоді ми визначаємо змінну в таких мовах, як javascript або Python, інтерпретатор відповідає за розуміння, якого типу це, та виділення достатньої кількості пам'яті для виконання операцій. Побачимо простий приклад 🙂

Власний. Крістофер Діас Ріверос

Як бачите, нам не потрібно пояснювати інтерпретатору python тип нашої змінної, оскільки вона відповідає за присвоєння типу та збереження його в пам'яті 🙂

Знайте свої змінні

Це залежить від мови та типу реалізації, яку ви збираєтесь використовувати, але першим кроком для програмування є вивчення змінних, які ви можете використовувати. використовувати їх ефективно та логічно для зберігання інформації (наданої користувачем або системою). Це перший крок на сходах програмування, і, сподіваюся, прочитавши цю статтю, ви краще зрозумієте, як працює ваш комп’ютер і як він зберігає інформацію. Це буде зі мною до наступної статті. Не забудьте залишити свої коментарі, щоб побачити, чи потрібно вам підкріплювати чи коментувати якийсь конкретний момент. Ура


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   Луїс - сказав він

    Добре написаний, лаконічний і чіткий, водночас цікавий для всієї аудиторії. Хороша робота.

    1.    ChrisADR - сказав він

      Щиро дякую, вітаю 🙂

  2.   Іван Ісус - сказав він

    Чудове пояснення. Ти машина.

    1.    ChrisADR - сказав він

      Дякую

  3.   Рубен - сказав він

    Дуже добре пояснив спасибі

    1.    ChrisADR - сказав він

      Дякую вам, що прочитали його повністю reading

  4.   Дієго - сказав він

    Чудово, дякую за вступ. А скориставшись бінарною проблемою, є можливість, що ви можете дати нам клас IP, підмережі тощо. Я розумію, що це не проблема програмування, але гарне пояснення цієї проблеми завжди очікувалося.
    Ще раз дякую за пояснення

    1.    ChrisADR - сказав він

      Привіт Дієго, це можна зробити 🙂, чесно кажучи, я теж не надто заглиблювався в цю тему, але немає кращого способу розслідування, ніж пошук чогось про це в статті about Ми залишимо це для переліку тому що в наступному дописі вже є тема, і мова йде про загартовування. Вітаю 🙂

  5.   Пітер - сказав він

    Ви прекрасний учитель і дуже щедрий для викладання того, що знаєте. Вітаю і дякую.

    1.    ChrisADR - сказав він

      Щиро дякую, Педро. Я все ще шукаю місця для викладання, на жаль, тут, у Перу, важко, коли ти маєш лише технічну освіту, тож зараз я розглядаю можливість продовжити навчання в університеті тут або там, де я можу або навіть подати заявку на ступінь магістра з іноземців, хто знає, можливо, щось подібне буде дано незабаром 🙂 але, безумовно, викладання - це те, що робить мій день 🙂 Вітаю

  6.   що в сім'ї щось - сказав він

    Я не читав кращого пояснення теми, перший приклад є блискучим

    хоча я не чув цього слова (як 16-бітові змінні), подвійного слова або чотирикутника

    неважливо, що "я вже програмую", публікації цікаві. Якщо є які-небудь проблеми, повідомлення полягає у використанні C (limit.h) як прикладу розмірів змінних, C має найменш конкретну специфікацію, яка існує

    1.    ChrisADR - сказав він

      Привіт, щось 🙂 дякую, я в дорозі придумав приклад 😛, оскільки це, безумовно, відомі дані для тих, хто прочитав трохи Асамблеї, і це те, що розуміє процесор. але я думаю, що це пов’язано з тим, що портативність та різні архітектури, які вона підтримує, були настільки різноманітними, що C повинен вміщувати кожен тип процесора, щоб бути справді портативним 🙂
      Вітаю та дякую за поділ.

  7.   Sergio - сказав він

    Хіба що було б цікаво, якби ця серія підручників базувалася на іржі, я думаю, що це одна з найцікавіших мов, що розробляються сьогодні.
    Я за ним, але я усвідомлюю, що це важка мова, але з великим майбутнім ...
    Я з нетерпінням чекаю ваших наступних статей, вони справді цікаві.
    Привіт.

    1.    ChrisADR - сказав він

      Привіт Серхіо, це, звичайно, було б цікаво, я чув, що GNOME планує впровадити Rust у своєму наборі програм, я ще не бачив повного обсягу, який вони мають намір, але міграція настає.
      Що стосується мов, я особисто все ще вивчаю С, я хочу мати можливість розпочати розробку в ядрі протягом найближчих кількох місяців, і я вважаю за краще вивчати кілька мов поглиблено, перш ніж починати перегляд нових, але я безумовно, шукайте щось цікаве і зробіть кілька прикладів у Rust, оскільки його документація виглядає досить непогано сама по собі.
      Вітаю та дякую за поділ 🙂

  8.   Девід - сказав він

    Дуже хороші пояснення, як у цій статті, так і в попередній. Сподіваюся, ви продовжите цю тему, яка мені здається дуже цікавою.

    1.    ChrisADR - сказав він

      Привіт Девід, я також сподіваюся, що зможу продовжувати писати і особливо мотивую людей до участі у вільному програмному забезпеченні, зараз так багато проектів та потреб, що мати кілька додаткових рук для розвитку було б чудово 🙂
      привіт

  9.   Аукціонний зал - сказав він

    Не могли б ви зробити допис про машину Тьюрінга?

    1.    ChrisADR - сказав він

      Привіт Март 🙂 Я думаю, що в якомусь коментарі ми вже торкалися цього, так? Я впевнений, що можу зібрати щось цікаве на цю тему 🙂 подивимось, що може вийти. Вітаю та дякую, що прочитали всі мої статті, з першого дня до сьогодні я завжди бачив вас досить зацікавленими 🙂

  10.   АЛЛАН ЛАРА - сказав він

    Ого, дякую, яке гарне пояснення.

    привіт

    1.    ChrisADR - сказав він

      Щиро дякую, Аллан!

  11.   Рамон Ідальго - сказав він

    Я прочитав ваш попередній допис! Щиро дякую за пояснення, хоча я думаю, що я ніколи не до кінця зрозумію це слово.

    1.    ChrisADR - сказав він

      Привіт, Рамоне, дякую вам за те, що прочитали обидва. Якщо це корисно, «слово» - це еволюція байта, це як процесори, до того, як були 8-бітні, після 16-бітові тощо ... це тому, що кожен раз, коли нам потрібно більше місця для процес і краща швидкість або потужність ... "слово" народилося, тому що простір "байта" скоротився, і те саме, що стосується слова "подвійний" і "чотирикутник", - це природна еволюція, яка змушує нас додавати потужність та простір для подальшого розвитку 🙂

      привіт

  12.   Анонімний - сказав він

    Цього 2018 року я вчуся програмувати так чи так, дякую

    1.    ChrisADR - сказав він

      Я рада 🙂 старайся !! з повагою

  13.   Білл - сказав він

    Щиро дякую, так продовжуйте. Я вже знаю, як програмувати, але чекаю ваших вчень, що моє програмування самоучок сповнене поганих практик.

    1.    ChrisADR - сказав він

      Дякую Гільєрмо 🙂 Ну, сподіваюсь, ви знайдете цікаві речі також у наступних дописах 🙂 Привітання

  14.   Едгар - сказав він

    Просте пояснення - це завжди найкраще .. чудово ..
    Я б запропонував git ... для програмістів є основним, коли ви хочете працювати в команді та навести свою роботу в порядку .. версії ..

    1.    ChrisADR - сказав він

      Дуже правда Едгар, я спробую розмістити про це вміст, хоча сказати щось нове досить складно, тому що документації до git вже багато, а кілька речей вже перекладено на кілька мов. Я подивлюсь, що я можу зробити, привітання та подяка за поділ

  15.   Тірірірі - сказав він

    Привіт, чи відповідає число від 0 до 18 446 744 073 709 551 615 64-бітному десятковому значенню чи воно стосується іншого значення? Ну, обчислюючи потужність 2 ^ 64, я отримую результат: 18 446 744 073 709 552 000.

    1.    ChrisADR - сказав він

      Привіт Тірірірі, я думаю, у вас проблема з округленням, ви можете спробувати скористатися командою bc? - це мова програмування, розроблена максимально точно, наскільки це можливо, потрапивши всередину, це потрібно лише зробити 2^64, можливо, це вирішить 🙂 дайте мені знати, як це пройшло, вітаю

      . Реальне значення - 18 446 744 073 709 551 616, але ми віднімаємо 1, оскільки 0 вважається можливим значенням 🙂

      1.    Тірірірі - сказав він

        Дякую, я розрахував це за допомогою калькулятора потужності, який я знайшов у мережі (https://es.calcuworld.com/calculadoras-matematicas/potencias/), і це був результат, який він мені дав.
        І так, я вже спробував команду bc, і це фактично дає мені значення, яке ви записали.

  16.   Тірірірі - сказав він

    Знову привіт, зображення, де ви посилаєтесь на бібліотеку limit.h, дуже маленьке і його неможливо прочитати (принаймні я не міг його прочитати, тому що я бачу, що всі це, здається), і оскільки я цього не розумію Я більше не продовжую читати. Не знаю, чи можете ви це змінити, сподіваюся, я вас цим не турбував.

    1.    ChrisADR - сказав він

      Ви можете спробувати мобільну версію, вони виглядають дещо зрозуміліше, це тема WordPress: / з іншого боку, всі заголовки C можна знайти в / usr / include /, у цьому випадку ви можете прочитати її безпосередньо, якщо це простіше 🙂 Я спробую завантажити більше зображення, щоб перевірити, чи це допомагає 🙂

      1.    Тірірірі - сказав він

        Дякую, я думаю, мені слід терпіти з цим, хе-хе.

  17.   Катекьо - сказав він

    Дякую за статтю, тому що тепер я трохи краще зрозумів змінні та діапазон представлення мови, але тепер я думаю, що мені слід почати використовувати бібліотеку "stdint.h", оскільки вони рекомендують її використовувати при програмуванні на c, оскільки я мав навчали старої школи, оскільки пам’ять була дорогоцінною, і треба було бути обережним із тим, що використовувалось

    1.    ChrisADR - сказав він

      Немає Katekyo, звичайно краще використовувати стандартну бібліотеку, але я можу запевнити вас, що краще знати, що відрізняє uint_least8_t від uint_fast8_t, і це досягається знанням примітивних типів даних, що було метою розмістити подяку за коментар та за прочитання статті, привітання

  18.   переможець - сказав він

    : Або майстерне пояснення! Я знав частину концепцій, але отримую багато нових знань із цієї посади

    1.    ChrisADR - сказав він

      Щиро дякую Вікторе 🙂 як добре, що стаття може допомогти, вітаю

  19.   Гіля - сказав він

    Мені дуже сподобався Python, щоб спростити програмування, я бачив курс в http://zetcode.com/gui/pyqt4/ Мені сподобався останній тетріс: http://zetcode.com/gui/pyqt4/thetetrisgame/
    Влітку я ретушував цей тетріс, щоб потроху, але дуже розважально ставити очки, багатокористувацьку музику та музику.

    1.    ChrisADR - сказав він

      Привіт Гілле, це, звичайно, дуже цікаво бачити, як програмне забезпечення, над яким ти працюєш, зростає потроху 🙂 це незрівнянний досвід, і тим більше, коли хтось вважає корисним те, що ти розробляєш, тобто з іншого світу 😀 дякую велике для спільного використання 🙂

      1.    Гіля - сказав він

        Той, який я зробив, я завантажив (30 Мб на музику) http://guillermo.molleda.com/Tetris9.7z
        Ви повинні налаштувати різну початкову швидкість для кожного гравця, або якщо ви перезапустите очки після нової гри,…, і для моїх двох дочок буде зі мною троє гравців. Це навіть викликає звикання.