К сожалению, я заметил, что не многие хотят научиться программировать в этом 2018 году 🙁, но даже если бы я только прочитал предыдущая статья человек, и через некоторое время он сможет отправить фиксацию в проект бесплатного программного обеспечения, я буду удовлетворен своей работой 🙂
Для тех, кто любит безопасность, я обещаю вам, что следующий пост будет о задачах безопасности, поэтому все будут счастливы, если кто-то захочет узнать что-то еще (например, git, администрирование сервера или я не знаю: p), или прокомментировать какую-либо другую тему на который нелегко ответить в поле для комментариев, дайте мне знать, и мы увидим, как мы можем с этим справиться 😉
Что ж, теперь, если мы перейдем к нашему делу, ранее мы говорили о типировании, и что это имело отношение к тому, как мы сохраняем наши переменные в программе, теперь мы собираемся рассмотреть немного того, что происходит внутри, и, надеюсь, это может быть достаточно ясно.
Биты
Я думаю, что это тема, которую я всегда затрагиваю, когда пишу о программировании, это, безусловно, то, что меня очаровывает и помогло мне понять многие вещи, теперь я попытаюсь немного объяснить, как они есть, как их читают и для чего они
Представьте выключатель света, когда цепь замкнута, у нас есть 0
на экране, когда мы меняем положение переключателя, потому что 1
🙂 просто не правда ли?
Теперь 0
y un
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
: второй бит, теперь позиция 1
: 2^1
что то же самое, что сказать 2
0
: третий бит ... это должно быть 2^2
, но так как он не включен, оставим его включенным. 0
1
: четвертый бит, 2^3
u 8
????
0
: такой же как 0
0
: разное 0
1
: теперь мы в 2^6
o 64
и, наконец, 0
, мы уже знаем, что это означает 🙂 теперь мы собираемся добавить наши результаты и сравнить их со следующей таблицей 🙂 У нас есть 75
так что давайте поищем это в столбце Десятичная дробь и мы увидим, что появится в Голец
У нас есть один 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 тип нашей переменной, потому что он позаботится о присвоении типа и сохранении его в памяти 🙂
Знай свои переменные
Это зависит от языка и типа реализации, которые вы собираетесь использовать, но первый шаг к программированию - это изучение переменных, которые вы можете использовать 🙂 Как только вы поймете переменные, вы сможете использовать их эффективно и логично для хранения информации (при условии пользователем или системой). Это первый шаг по лестнице программирования, и, надеюсь, после прочтения этой статьи вы лучше поймете, как работает ваш компьютер и как он хранит информацию. Это будет со мной до следующей статьи, не забудьте оставить свои комментарии, чтобы увидеть, нужно ли вам подкрепить или прокомментировать какой-либо конкретный момент. Ура
Хорошо написано, лаконично и понятно, но в то же время интересно для всех. Хорошая работа.
Большое спасибо, привет
Отличное объяснение. Ты машина.
Благодарю вас!
Очень хорошо объяснил спасибо
Спасибо, что прочитали его полностью 🙂
Отлично, спасибо за вклад. И, воспользовавшись двоичной проблемой, вы можете предоставить нам IP-класс, подсеть и т. Д. Я понимаю, что это не проблема программирования, но хорошее объяснение этой проблемы всегда ожидалось.
Еще раз спасибо за ваше объяснение
Привет, Диего, это можно сделать 🙂 честно говоря, я тоже не особо углублялся в эту тему, но нет лучшего способа исследовать, чем искать что-то, чем можно поделиться в статье 🙂 Мы оставим это для списка потому что в следующем посте уже есть тема, и она будет посвящена усилению защиты. Привет 🙂
Вы отличный учитель и очень щедрый на то, что преподаете тому, что знаете. Поздравления и спасибо.
Большое спасибо, Педро 🙂 Я все еще ищу места, где можно преподавать, к сожалению, здесь, в Перу, трудно, когда у вас есть только профессиональная техническая степень, поэтому сейчас я рассматриваю возможность продолжить учебу в университете здесь или там, где я могу или даже подать заявку на степень магистра у иностранца, кто знает, может быть, скоро что-то подобное будет дано 🙂 но определенно преподавание - это то, что делает мой день 🙂 Приветствую
Я не читал лучшего объяснения предмета, первый пример блестящий
хотя я не слышал это слово (например, 16-битные переменные), двойное слово или четверное слово
вне зависимости от "уже программировал", посты интересные. Если есть какие-либо проблемы, сообщение должно использовать C (limits.h) в качестве примера размеров переменных, C имеет наименее конкретную спецификацию, которая существует
Привет что-нибудь 🙂 большое спасибо, я придумал пример на подходе 😛 потому что это, безусловно, известные данные для тех, кто немного читал ассемблер, и это то, что понимает процессор 🙂 хахаха, конечно, C не очень специфичен, но я думаю, что это так. Это связано с тем, что переносимость и различные поддерживаемые им архитектуры были настолько разнообразны, что C должен учитывать каждый тип процессора, чтобы быть действительно портативным 🙂
Приветствую и спасибо, что поделились.
Не знаю, было бы интересно, если бы эта серия руководств была основана на ржавчине, я думаю, что это один из самых интересных языков, которые разрабатываются сегодня.
Я за ним, но понимаю, что это трудный язык, но с большим будущим ...
С нетерпением жду ваших следующих статей, они действительно интересные.
Привет.
Привет, Серджио, это, безусловно, было бы интересно, я слышал, что GNOME планирует реализовать Rust в рамках своего набора программ, я еще не видел его в полной мере, но скоро произойдет переход.
Что касается языков, я лично все еще изучаю C, я хочу иметь возможность начать разработку в ядре в ближайшие несколько месяцев, и я предпочитаю выучить несколько языков углубленно, прежде чем я начну рассматривать новые, но я определенно могу найти что-то интересное и сделать несколько примеров в Rust, поскольку его документация сама по себе выглядит неплохо.
Приветствую и спасибо, что поделились 🙂
Очень хорошие объяснения как в этой статье, так и в предыдущей. Я надеюсь, что вы продолжите эту тему, которая мне очень интересна.
Привет, Дэвид, я также надеюсь продолжить писать и особенно мотивировать людей участвовать с бесплатными программами, сейчас существует так много проектов и потребностей, что было бы здорово иметь несколько дополнительных рук для разработки 🙂
привет
Не могли бы вы написать о машине Тьюринга?
Привет, Март 🙂 Я думаю, что в каком-то комментарии мы уже коснулись этого раньше, верно? Я уверен, что смогу собрать что-нибудь интересное по этой теме 🙂 посмотрим, что из этого выйдет. Приветствую и спасибо, что прочитали все мои статьи, с первого дня до сегодняшнего дня я всегда видел, что вы очень заинтересованы
Вау, большое спасибо за хорошее объяснение.
привет
Большое спасибо Аллан 🙂 С уважением
Прочитал ваш предыдущий пост! Большое спасибо за объяснение, хотя думаю, что никогда не дойду до понимания слова.
Привет, Рамон 🙂 большое спасибо, что прочитали оба. Если это имеет какое-то значение, «слово» - это эволюция байта, это похоже на процессоры, до того, как было 8 бит, после 16 бит и т.д ... Это потому, что каждый раз нам требуется больше места для обработки и лучшая скорость или мощность ... «слово» родилось из-за того, что пространство в «байте» не хватило, и то же самое с «двойным» и «четверным» словом 🙂 это естественная эволюция, которая заставляет нас добавлять мощность и пространство для продолжения развития 🙂
привет
В этом 2018 году я учусь программировать да или да, спасибо
Я рада старайся !! Ура
Большое спасибо, так держать. Я уже умею программировать, но жду ваших учений, что мое программирование-самоучка полно плохих практик.
Спасибо, Гильермо 🙂 Надеюсь, вы найдете интересные вещи и в следующих постах 🙂 Приветствую
Простое объяснение всегда лучше .. отлично ..
Я бы предложил git ... для программистов это базовый вариант, когда вы хотите работать в команде и упорядочить свою работу .. версии ..
Совершенно верно, Эдгар, я постараюсь публиковать материалы об этом, хотя довольно сложно сказать что-то новое, потому что документации по git уже много, и некоторые вещи уже переведены на несколько языков. Я посмотрю, что я могу сделать, привет и спасибо, что поделились
Здравствуйте, соответствует ли число от 0 до 18 446 744 073 709 551 615 64-битному десятичному значению или оно относится к другому значению? Итак, вычислив степень 2 ^ 64, я получу: 18 446 744 073 709 552.
Привет, Тиририри, я думаю, у вас проблема с округлением, вы можете попробовать использовать команду
bc
? это язык программирования, разработанный для максимальной точности, когда внутри него нужно только сделать2^64
Может, это решит 🙂 дайте мне знать, как все прошло, привет. Реальное значение 18 446 744 073 709 551 616, но мы вычитаем 1, потому что 0 считается возможным значением 🙂
Спасибо, я рассчитал это с помощью калькулятора мощности, который нашел в сети (https://es.calcuworld.com/calculadoras-matematicas/potencias/), и это был результат, который он дал мне.
И да, я уже пробовал команду bc, и она фактически дает мне значение, которое вы записали.
И снова здравствуйте, изображение, в котором вы ссылаетесь на библиотеку limits.h, очень маленькое и не может быть прочитано (по крайней мере, я не мог его прочитать, потому что я вижу, что, похоже, все это сделали), и поскольку я его не понимаю Я больше не продолжаю читать. Не знаю, можете ли вы это изменить, надеюсь, я вас этим не беспокоил.
Вы можете попробовать мобильную версию, они выглядят немного яснее, это тема wordpress: / с другой стороны, все заголовки C можно найти в / usr / include /, в этом случае вы можете прочитать его напрямую, если вы Так проще 🙂 Я попробую загрузить изображение побольше, чтобы посмотреть, поможет ли 🙂
Спасибо, я думаю, мне следует набраться терпения, хе-хе.
Спасибо за статью, так как теперь я немного лучше понял переменные и диапазон представления языка, но теперь я думаю, что мне следует начать использовать библиотеку "stdint.h", поскольку они рекомендуют использовать ее при программировании на c, так как у меня учили старой школе, так как память была драгоценна, и нужно было быть осторожным с тем, что использовалось
Для Katekyo нет причин, конечно, лучше использовать стандартную библиотеку, но я могу вас заверить, что лучше знать, что отличает uint_least8_t от uint_fast8_t, и это достигается за счет знания примитивных типов данных, что и было целью поста 🙂 Большое спасибо за комментарий и за чтение статьи, привет
: Или мастерское объяснение! Я знал часть концепций, но из этого поста я почерпнул много нового.
Большое спасибо Виктору как хорошо, что статья может помочь, привет
Мне очень понравился Python для упрощения программирования, я видел курс в http://zetcode.com/gui/pyqt4/ Мне очень понравился последний тетрис из: http://zetcode.com/gui/pyqt4/thetetrisgame/
Этот тетрис я ретушировал летом, чтобы поставить очки, мультиплеер и музыку, понемногу, но очень занимательно.
Привет, Гилль, конечно, очень интересно наблюдать, как программное обеспечение, над которым вы работаете, постепенно растет 🙂 это ни с чем не сравнимый опыт, и тем более, когда кто-то находит то, что вы разрабатываете, полезным, то есть из другого мира 😀 большое спасибо для обмена 🙂
Тот, который я сделал, я загрузил (30Мб музыки) на http://guillermo.molleda.com/Tetris9.7z
Вы должны настроить разную начальную скорость для каждого игрока, или если вы перезапустите очки после новой игры,…, и есть три игрока для двух моих дочерей, которые будут играть со мной. Это даже вызывает привыкание.