Розділення понять
Байт та біт (eng. byte ) (eng. bit )
Біт (eng. bit ) - (8, 16, 24, 32....) мінімальна кількість інформація, яка представляється у двійковій системі числення. 1 чи 0, що собою символізують стан (увімкнено/вимкнено).
Ваш вимикач на кухні, це фізичний еквівалент 1 біту
Але гра також має приклад одного біта і це Вимикач для електричних мереж
Байт (eng. byte ) - простими словами, представляють собою контейнери котрі зберігають інформацію із 1\0
8 bit = 1 byte
А для демонстрації бітово зсуву (binary shift) буду використовувати схемку на 32 bits
Внизу її частина, умовно білі вказують на байт, а мідні на біт
Для підтвердження взяв випадковий сайт [convertlive.com] для конвертування
Двійкові та десяткові числа
Як 13 в 1101? ¯\_(ツ)_/¯
Для переведення звичних 13 у двійкові використовується операція ділення з остачею.
Таким чином, бінарне представлення числа 13 буде 1101
Як звучить "правило для переведення десяткового числа в двійкове"
При переведенні десяткового числа в двійкове використовується метод поділу на 2. Якщо число ділиться націло на 2, записується 0 (відсутня остача від ділення), а якщо число не ділиться націло на 2, записується 1 (оскільки ми отримуємо остачу від ділення). Це правило застосовується на кожному кроці поділу десяткового числа на 2 до тих пір, поки результат ділення не стане 0. Після цього остачі записуються у зворотньому порядку, щоб отримати бінарне представлення числа.
Перевірка за допомогою онлайн калькулятора
Приклад у грі за допомогою ігрової логіки
Приклад остачі уже на числі 32
Далі буде використовуватись онлайн калькулятор, а це розділ слугує для розуміння магії яку він творить
Найстарший біт
Знаковий біт. Самий лівий біт в числі та вказує на знак для десяткового числа
Для 4 bit 1010 найстаршим буде 1010, а для 8 bit 1011 1011 відповідно 1011 1011
Приклад, якщо візьму 1 зроблю бітовий зсув на 31, то в результаті отримаємо максимально від'ємне значення для 32 bit програм -2147483648
На фото не горить жодна із лампочок по причині, що значення від'ємне
Проте, якщо буде зміщення на 30 bit, то значення буде 1073741824
Найстарший біт. І він в буде відповідати за знак в 32 bit
Далі зручно буде користуватись калькулятором[www.binaryconvert.com]
32 Bit та "гайд, як довести гру фризів"
Factorio написана на розрядності 32 bit.
Тому представлення максимального і мінімального значення для такої розрядності буде таким
MIN -2 147 483 648 MAX 2 147 483 647
Особливість:
Якщо до максимально значення додати один то в результаті отримаємо мінімальне
2 147 483 647
+1
-2 147 483 648
Майже по схожому із мінімальним значення
-2 147 483 648
-1
2 147 483 647
Причина тому, переповнення
Це виникає, коли результат арифметичної операції виходить за межі можливого діапазону для певного формату числа. Наприклад, у двійковому представленні 32-бітних чисел, якщо до максимального значення додати одиницю, виникає переповнення, і отримується мінімальне значення.
Приклад переповнення в житті, це "тахометр"
Коли при досягнення максимуму починається новий цикл
Така кількість предметів 2 147 483 647 може покласти ваш світ чи навіть гру, можливий навіть синій екран
Бітовий зсув
Бітовий зсув - це переміщення бітів у двійковому числі вліво або вправо. Коли біт виходить за межі числа, він втрачається, а нові біти заповнюють порожні місця.
Виконуючи бітовий зсув, ми в результаті змінюємо десяткове значення на виході.
Максимальне значення, обмежене тільки розрядністью програми чи гри
Використаю візуальну демонстрацію.
Візьмемо 13, що звичайно виглядає так
Тепер зробимо зсув вліво на 5
Перемістивши на 5 вже маємо не 13, а 416
Хоча 1101 підходить і для 13 та 416 просто знаходять в іншому місці byte
Ось відео для більш наглядного розуміння
https://youtu.be/fHAFPdr4fiU?si=QlpoHuUFe-8Y9aj0
Схема
В постійному комбінаторі задаються дані/значення, далі вони потрапляють в комбінатор який керує бітовим зсувом: на значення 1,2,3..... та напрям вправо (>>) чи вліво (<<)
Далі сигнал йде до Арифметичних комбінатор, що у нашому випадку разом відіграють роль 1 byte чи 8 bit
З них вже сигнал йде в комбінатор який ділить на остаток (%) *число* % 2
Як працюють сегменти/сигнали дисплея
Візьму дисплей із гайду
https://steamcommunity.com/sharedfiles/filedetails/?id=3159067876
Буду показувати на такій схемці. Де 1 - це десятковий вигляд, а 2 бітовий
Беру в комбінатор та задаю наш символ А та зміщую на 1
І ми отримали значення зі знаком плюс.
Нагадаю умовою загоряння у лампочок дисплея така "символ" < 0
Проте, якщо змістити на 2 то значення буде мінус тому, що на двійці сегмент А повинен горіти
По грубому: Десяткове значення "символа" це бітовий код. Який містить інформацію, коли сигнал позитивний, а коли негативний. Тобто завдяки йому лампочка знає коли їй потрібно працювати, а коли ні
Джерела, якими користувався
OpenAI ChatGPT
Нумерація бітів
https://hmn.wiki/uk/Most_significant_bit
Біт
https://uk.wikipedia.org/wiki/%D0%91%D1%96%D1%82
Знаковий біт https://uk.wikipedia.org/wiki/%D0%97%D0%BD%D0%B0%D0%BA%D0%BE%D0%B2%D0%B8%D0%B9_%D0%B1%D1%96%D1%82
Перевести bit / byte
https://citizenmaths.com/ru/data-storage/32-bit-to-byte
Переповнення
https://en.wikipedia.org/wiki/Integer_overflow
Бітовий зсув https://www.wikiwand.com/uk/%D0%91%D1%96%D1%82%D0%BE%D0%B2%D0%B8%D0%B9_%D0%B7%D1%81%D1%83%D0%B2
Ділення з остачею
https://www.wikiwand.com/uk/%D0%94%D1%96%D0%BB%D0%B5%D0%BD%D0%BD%D1%8F_%D0%B7_%D0%BE%D1%81%D1%82%D0%B0%D1%87%D0%B5%D1%8E
Factorio wiki Арифметичний комбінатор
https://wiki.factorio.com/Arithmetic_combinator/uk
Найстарший біт
https://www.techtarget.com/whatis/definition/most-significant-bit-or-byte
Концепт схеми
https://www.youtube.com/watch?v=KTdvGZfWMX4
Blueprint
Тут схемка на 32 bit та декілька готових варіантів дисплеїв
https://factoriobin.com/post/8iUNMTDm
Source: https://steamcommunity.com/sharedfiles/filedetails/?id=3161023667
More Factorio guilds
- All Guilds
- FACTORIO (UA)
- Train builder for FACTORIO (ENG)
- 1188 (11 to 88 Flow Line Blueprints)
- Unpatched Bugs List as of Version 1.1.107
- Alternative Atmospherics
- Factorio Guide 842
- Haxard's Blueprint Book v1.1
- Achievements - Saved games
- Factorio
- 22 . Factorio | F