На жаль, я побачив, що не багато хто хоче навчитися програмувати цей 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
: другий біт, тепер позиція 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
.
слово
Зараз мені скажуть не один, але що, якщо мені знадобиться число більше, ніж 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 тип нашої змінної, оскільки вона відповідає за присвоєння типу та збереження його в пам'яті 🙂
Знайте свої змінні
Це залежить від мови та типу реалізації, яку ви збираєтесь використовувати, але першим кроком для програмування є вивчення змінних, які ви можете використовувати. використовувати їх ефективно та логічно для зберігання інформації (наданої користувачем або системою). Це перший крок на сходах програмування, і, сподіваюся, прочитавши цю статтю, ви краще зрозумієте, як працює ваш комп’ютер і як він зберігає інформацію. Це буде зі мною до наступної статті. Не забудьте залишити свої коментарі, щоб побачити, чи потрібно вам підкріплювати чи коментувати якийсь конкретний момент. Ура
Добре написаний, лаконічний і чіткий, водночас цікавий для всієї аудиторії. Хороша робота.
Щиро дякую, вітаю 🙂
Чудове пояснення. Ти машина.
Дякую
Дуже добре пояснив спасибі
Дякую вам, що прочитали його повністю reading
Чудово, дякую за вступ. А скориставшись бінарною проблемою, є можливість, що ви можете дати нам клас IP, підмережі тощо. Я розумію, що це не проблема програмування, але гарне пояснення цієї проблеми завжди очікувалося.
Ще раз дякую за пояснення
Привіт Дієго, це можна зробити 🙂, чесно кажучи, я теж не надто заглиблювався в цю тему, але немає кращого способу розслідування, ніж пошук чогось про це в статті about Ми залишимо це для переліку тому що в наступному дописі вже є тема, і мова йде про загартовування. Вітаю 🙂
Ви прекрасний учитель і дуже щедрий для викладання того, що знаєте. Вітаю і дякую.
Щиро дякую, Педро. Я все ще шукаю місця для викладання, на жаль, тут, у Перу, важко, коли ти маєш лише технічну освіту, тож зараз я розглядаю можливість продовжити навчання в університеті тут або там, де я можу або навіть подати заявку на ступінь магістра з іноземців, хто знає, можливо, щось подібне буде дано незабаром 🙂 але, безумовно, викладання - це те, що робить мій день 🙂 Вітаю
Я не читав кращого пояснення теми, перший приклад є блискучим
хоча я не чув цього слова (як 16-бітові змінні), подвійного слова або чотирикутника
неважливо, що "я вже програмую", публікації цікаві. Якщо є які-небудь проблеми, повідомлення полягає у використанні C (limit.h) як прикладу розмірів змінних, C має найменш конкретну специфікацію, яка існує
Привіт, щось 🙂 дякую, я в дорозі придумав приклад 😛, оскільки це, безумовно, відомі дані для тих, хто прочитав трохи Асамблеї, і це те, що розуміє процесор. але я думаю, що це пов’язано з тим, що портативність та різні архітектури, які вона підтримує, були настільки різноманітними, що C повинен вміщувати кожен тип процесора, щоб бути справді портативним 🙂
Вітаю та дякую за поділ.
Хіба що було б цікаво, якби ця серія підручників базувалася на іржі, я думаю, що це одна з найцікавіших мов, що розробляються сьогодні.
Я за ним, але я усвідомлюю, що це важка мова, але з великим майбутнім ...
Я з нетерпінням чекаю ваших наступних статей, вони справді цікаві.
Привіт.
Привіт Серхіо, це, звичайно, було б цікаво, я чув, що GNOME планує впровадити Rust у своєму наборі програм, я ще не бачив повного обсягу, який вони мають намір, але міграція настає.
Що стосується мов, я особисто все ще вивчаю С, я хочу мати можливість розпочати розробку в ядрі протягом найближчих кількох місяців, і я вважаю за краще вивчати кілька мов поглиблено, перш ніж починати перегляд нових, але я безумовно, шукайте щось цікаве і зробіть кілька прикладів у Rust, оскільки його документація виглядає досить непогано сама по собі.
Вітаю та дякую за поділ 🙂
Дуже хороші пояснення, як у цій статті, так і в попередній. Сподіваюся, ви продовжите цю тему, яка мені здається дуже цікавою.
Привіт Девід, я також сподіваюся, що зможу продовжувати писати і особливо мотивую людей до участі у вільному програмному забезпеченні, зараз так багато проектів та потреб, що мати кілька додаткових рук для розвитку було б чудово 🙂
привіт
Не могли б ви зробити допис про машину Тьюрінга?
Привіт Март 🙂 Я думаю, що в якомусь коментарі ми вже торкалися цього, так? Я впевнений, що можу зібрати щось цікаве на цю тему 🙂 подивимось, що може вийти. Вітаю та дякую, що прочитали всі мої статті, з першого дня до сьогодні я завжди бачив вас досить зацікавленими 🙂
Ого, дякую, яке гарне пояснення.
привіт
Щиро дякую, Аллан!
Я прочитав ваш попередній допис! Щиро дякую за пояснення, хоча я думаю, що я ніколи не до кінця зрозумію це слово.
Привіт, Рамоне, дякую вам за те, що прочитали обидва. Якщо це корисно, «слово» - це еволюція байта, це як процесори, до того, як були 8-бітні, після 16-бітові тощо ... це тому, що кожен раз, коли нам потрібно більше місця для процес і краща швидкість або потужність ... "слово" народилося, тому що простір "байта" скоротився, і те саме, що стосується слова "подвійний" і "чотирикутник", - це природна еволюція, яка змушує нас додавати потужність та простір для подальшого розвитку 🙂
привіт
Цього 2018 року я вчуся програмувати так чи так, дякую
Я рада 🙂 старайся !! з повагою
Щиро дякую, так продовжуйте. Я вже знаю, як програмувати, але чекаю ваших вчень, що моє програмування самоучок сповнене поганих практик.
Дякую Гільєрмо 🙂 Ну, сподіваюсь, ви знайдете цікаві речі також у наступних дописах 🙂 Привітання
Просте пояснення - це завжди найкраще .. чудово ..
Я б запропонував git ... для програмістів є основним, коли ви хочете працювати в команді та навести свою роботу в порядку .. версії ..
Дуже правда Едгар, я спробую розмістити про це вміст, хоча сказати щось нове досить складно, тому що документації до git вже багато, а кілька речей вже перекладено на кілька мов. Я подивлюсь, що я можу зробити, привітання та подяка за поділ
Привіт, чи відповідає число від 0 до 18 446 744 073 709 551 615 64-бітному десятковому значенню чи воно стосується іншого значення? Ну, обчислюючи потужність 2 ^ 64, я отримую результат: 18 446 744 073 709 552 000.
Привіт Тірірірі, я думаю, у вас проблема з округленням, ви можете спробувати скористатися командою
bc
? - це мова програмування, розроблена максимально точно, наскільки це можливо, потрапивши всередину, це потрібно лише зробити2^64
, можливо, це вирішить 🙂 дайте мені знати, як це пройшло, вітаю. Реальне значення - 18 446 744 073 709 551 616, але ми віднімаємо 1, оскільки 0 вважається можливим значенням 🙂
Дякую, я розрахував це за допомогою калькулятора потужності, який я знайшов у мережі (https://es.calcuworld.com/calculadoras-matematicas/potencias/), і це був результат, який він мені дав.
І так, я вже спробував команду bc, і це фактично дає мені значення, яке ви записали.
Знову привіт, зображення, де ви посилаєтесь на бібліотеку limit.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
Ви повинні налаштувати різну початкову швидкість для кожного гравця, або якщо ви перезапустите очки після нової гри,…, і для моїх двох дочок буде зі мною троє гравців. Це навіть викликає звикання.