Переменная 101: знание своего компьютера

К сожалению, я заметил, что не многие хотят научиться программировать в этом 2018 году 🙁, но даже если бы я только прочитал предыдущая статья человек, и через некоторое время он сможет отправить фиксацию в проект бесплатного программного обеспечения, я буду удовлетворен своей работой 🙂

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

Что ж, теперь, если мы перейдем к нашему делу, ранее мы говорили о типировании, и что это имело отношение к тому, как мы сохраняем наши переменные в программе, теперь мы собираемся рассмотреть немного того, что происходит внутри, и, надеюсь, это может быть достаточно ясно.

Биты

Я думаю, что это тема, которую я всегда затрагиваю, когда пишу о программировании, это, безусловно, то, что меня очаровывает и помогло мне понять многие вещи, теперь я попытаюсь немного объяснить, как они есть, как их читают и для чего они

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

Теперь 0 и 1 они могут означать разные вещи, все зависит от творческого подхода, с которым вы их воспринимаете. Предположим, я хочу знать, собирается ли кто-то на Север или на Юг, 1 может означать север и 0, сюр 🙂 скажем, что я хочу знать, мужчина это или женщина, 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.

Word

Теперь мне скажут несколько человек, но что, если мне нужно число больше, чем 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 у нас есть отрицательный. Теперь посмотрим, почему биты такие особенные, они могут быть какими угодно 😀

Но это, очевидно, оставляет нам на одну позицию меньше для умножения! Итак, наш0 a 4 294 967 295 становится:

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

Теперь у многих из нас уже есть 64 bits, а это значение четверное слово, мы можем иметь значения от 0 a 18 446 744 073 709 551 615. Это большое число 🙂

Почему 8 бит?

Это то, что зададут многие, и ответ кроется в аппаратном обеспечении. С самого начала процессоры нуждались в данных, чтобы иметь возможность выполнять операции. Данные хранятся в памяти компьютера, и каждый раз, когда процессор требует их, он использует шины данных для их получения. В древние времена эти шины могли передавать максимум 8 бит за цикл, это означает, что максимальный и наиболее эффективный способ перемещения данных заключался в группировании 8 бит и отправке их процессору.

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

При чем тут набор текста?

Теперь мы находимся в той части, где все это имеет смысл 🙂 Набор текста - это свойство, которое языки программирования используют для именования этих пространств памяти. Все переменные имеют свой аналог в одном из этих типов данных, независимо от того, как они называются. Они известны как примитивные типы данныхКаждый строго типизированный язык имеет свою концепцию этих значений и количества, которое они представляют. Например, в C у нас есть библиотека limits.h который показывает нам максимальное и минимальное количество примитивных значений.

Посмотрим, что произойдет, если мы попытаемся сломать одно из значений:

Своя. Кристофер Диас Риверос

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

Со стороны переводчика это проще из-за неявные преобразования. CКогда мы определяем переменную на таких языках, как javascript или Python, интерпретатор отвечает за понимание того, что это за тип, и за выделение достаточного объема памяти для выполнения операций. Давайте посмотрим на простой пример 🙂

Своя. Кристофер Диас Риверос

Как видите, нам не нужно объяснять интерпретатору python тип нашей переменной, потому что он позаботится о присвоении типа и сохранении его в памяти 🙂

Знай свои переменные

Это зависит от языка и типа реализации, которые вы собираетесь использовать, но первый шаг к программированию - это изучение переменных, которые вы можете использовать 🙂 Как только вы поймете переменные, вы сможете использовать их эффективно и логично для хранения информации (при условии пользователем или системой). Это первый шаг по лестнице программирования, и, надеюсь, после прочтения этой статьи вы лучше поймете, как работает ваш компьютер и как он хранит информацию. Это будет со мной до следующей статьи, не забудьте оставить свои комментарии, чтобы увидеть, нужно ли вам подкрепить или прокомментировать какой-либо конкретный момент. Ура


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

41 комментариев, оставьте свой

Оставьте свой комментарий

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

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Луис сказал

    Хорошо написано, лаконично и понятно, но в то же время интересно для всех. Хорошая работа.

    1.    ChrisADR сказал

      Большое спасибо, привет

  2.   Иоанн Иисус сказал

    Отличное объяснение. Ты машина.

    1.    ChrisADR сказал

      Благодарю вас!

  3.   Рубен сказал

    Очень хорошо объяснил спасибо

    1.    ChrisADR сказал

      Спасибо, что прочитали его полностью 🙂

  4.   Диего сказал

    Отлично, спасибо за вклад. И, воспользовавшись двоичной проблемой, вы можете предоставить нам IP-класс, подсеть и т. Д. Я понимаю, что это не проблема программирования, но хорошее объяснение этой проблемы всегда ожидалось.
    Еще раз спасибо за ваше объяснение

    1.    ChrisADR сказал

      Привет, Диего, это можно сделать 🙂 честно говоря, я тоже не особо углублялся в эту тему, но нет лучшего способа исследовать, чем искать что-то, чем можно поделиться в статье 🙂 Мы оставим это для списка потому что в следующем посте уже есть тема, и она будет посвящена усилению защиты. Привет 🙂

  5.   Pedro сказал

    Вы отличный учитель и очень щедрый на то, что преподаете тому, что знаете. Поздравления и спасибо.

    1.    ChrisADR сказал

      Большое спасибо, Педро 🙂 Я все еще ищу места, где можно преподавать, к сожалению, здесь, в Перу, трудно, когда у вас есть только профессиональная техническая степень, поэтому сейчас я рассматриваю возможность продолжить учебу в университете здесь или там, где я могу или даже подать заявку на степень магистра у иностранца, кто знает, может быть, скоро что-то подобное будет дано 🙂 но определенно преподавание - это то, что делает мой день 🙂 Приветствую

  6.   что-то сказал

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

    хотя я не слышал это слово (например, 16-битные переменные), двойное слово или четверное слово

    вне зависимости от "уже программировал", посты интересные. Если есть какие-либо проблемы, сообщение должно использовать C (limits.h) в качестве примера размеров переменных, C имеет наименее конкретную спецификацию, которая существует

    1.    ChrisADR сказал

      Привет что-нибудь 🙂 большое спасибо, я придумал пример на подходе 😛 потому что это, безусловно, известные данные для тех, кто немного читал ассемблер, и это то, что понимает процессор 🙂 хахаха, конечно, C не очень специфичен, но я думаю, что это так. Это связано с тем, что переносимость и различные поддерживаемые им архитектуры были настолько разнообразны, что C должен учитывать каждый тип процессора, чтобы быть действительно портативным 🙂
      Приветствую и спасибо, что поделились.

  7.   Серхио сказал

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

    1.    ChrisADR сказал

      Привет, Серджио, это, безусловно, было бы интересно, я слышал, что GNOME планирует реализовать Rust в рамках своего набора программ, я еще не видел его в полной мере, но скоро произойдет переход.
      Что касается языков, я лично все еще изучаю C, я хочу иметь возможность начать разработку в ядре в ближайшие несколько месяцев, и я предпочитаю выучить несколько языков углубленно, прежде чем я начну рассматривать новые, но я определенно могу найти что-то интересное и сделать несколько примеров в Rust, поскольку его документация сама по себе выглядит неплохо.
      Приветствую и спасибо, что поделились 🙂

  8.   David сказал

    Очень хорошие объяснения как в этой статье, так и в предыдущей. Я надеюсь, что вы продолжите эту тему, которая мне очень интересна.

    1.    ChrisADR сказал

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

  9.   Mart сказал

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

    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.

    1.    ChrisADR сказал

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

      . Реальное значение 18 446 744 073 709 551 616, но мы вычитаем 1, потому что 0 считается возможным значением 🙂

      1.    Тиририри сказал

        Спасибо, я рассчитал это с помощью калькулятора мощности, который нашел в сети (https://es.calcuworld.com/calculadoras-matematicas/potencias/), и это был результат, который он дал мне.
        И да, я уже пробовал команду bc, и она фактически дает мне значение, которое вы записали.

  16.   Тиририри сказал

    И снова здравствуйте, изображение, в котором вы ссылаетесь на библиотеку limits.h, очень маленькое и не может быть прочитано (по крайней мере, я не мог его прочитать, потому что я вижу, что, похоже, все это сделали), и поскольку я его не понимаю Я больше не продолжаю читать. Не знаю, можете ли вы это изменить, надеюсь, я вас этим не беспокоил.

    1.    ChrisADR сказал

      Вы можете попробовать мобильную версию, они выглядят немного яснее, это тема wordpress: / с другой стороны, все заголовки C можно найти в / usr / include /, в этом случае вы можете прочитать его напрямую, если вы Так проще 🙂 Я попробую загрузить изображение побольше, чтобы посмотреть, поможет ли 🙂

      1.    Тиририри сказал

        Спасибо, я думаю, мне следует набраться терпения, хе-хе.

  17.   Katekyo сказал

    Спасибо за статью, так как теперь я немного лучше понял переменные и диапазон представления языка, но теперь я думаю, что мне следует начать использовать библиотеку "stdint.h", поскольку они рекомендуют использовать ее при программировании на c, так как у меня учили старой школе, так как память была драгоценна, и нужно было быть осторожным с тем, что использовалось

    1.    ChrisADR сказал

      Для Katekyo нет причин, конечно, лучше использовать стандартную библиотеку, но я могу вас заверить, что лучше знать, что отличает uint_least8_t от uint_fast8_t, и это достигается за счет знания примитивных типов данных, что и было целью поста 🙂 Большое спасибо за комментарий и за чтение статьи, привет

  18.   победитель сказал

    : Или мастерское объяснение! Я знал часть концепций, но из этого поста я почерпнул много нового.

    1.    ChrisADR сказал

      Большое спасибо Виктору как хорошо, что статья может помочь, привет

  19.   Guille сказал

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

    1.    ChrisADR сказал

      Привет, Гилль, конечно, очень интересно наблюдать, как программное обеспечение, над которым вы работаете, постепенно растет 🙂 это ни с чем не сравнимый опыт, и тем более, когда кто-то находит то, что вы разрабатываете, полезным, то есть из другого мира 😀 большое спасибо для обмена 🙂

      1.    Guille сказал

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