DLC (bit, byte, binary shift and other) (UA)

DLC (bit, byte, binary shift and other) (UA)

Розділення понять


DLC (bit, byte, binary shift and other) (UA) image 1

DLC (bit, byte, binary shift and other) (UA) image 2
DLC (bit, byte, binary shift and other) (UA) image 3
DLC (bit, byte, binary shift and other) (UA) image 4

Байт та біт (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] для конвертування

Двійкові та десяткові числа


DLC (bit, byte, binary shift and other) (UA) image 19

DLC (bit, byte, binary shift and other) (UA) image 20
DLC (bit, byte, binary shift and other) (UA) image 21
DLC (bit, byte, binary shift and other) (UA) image 22

Як 13 в 1101? ¯\_(ツ)_/¯

Для переведення звичних 13 у двійкові використовується операція ділення з остачею.

Таким чином, бінарне представлення числа 13 буде 1101

Як звучить "правило для переведення десяткового числа в двійкове"

При переведенні десяткового числа в двійкове використовується метод поділу на 2. Якщо число ділиться націло на 2, записується 0 (відсутня остача від ділення), а якщо число не ділиться націло на 2, записується 1 (оскільки ми отримуємо остачу від ділення). Це правило застосовується на кожному кроці поділу десяткового числа на 2 до тих пір, поки результат ділення не стане 0. Після цього остачі записуються у зворотньому порядку, щоб отримати бінарне представлення числа.

Перевірка за допомогою онлайн калькулятора

Приклад у грі за допомогою ігрової логіки

Приклад остачі уже на числі 32

Далі буде використовуватись онлайн калькулятор, а це розділ слугує для розуміння магії яку він творить

Найстарший біт


DLC (bit, byte, binary shift and other) (UA) image 36
DLC (bit, byte, binary shift and other) (UA) image 37

DLC (bit, byte, binary shift and other) (UA) image 38
DLC (bit, byte, binary shift and other) (UA) image 39
DLC (bit, byte, binary shift and other) (UA) image 40
DLC (bit, byte, binary shift and other) (UA) image 41
DLC (bit, byte, binary shift and other) (UA) image 42

Знаковий біт. Самий лівий біт в числі та вказує на знак для десяткового числа

Для 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 та "гайд, як довести гру фризів"


DLC (bit, byte, binary shift and other) (UA) image 55

DLC (bit, byte, binary shift and other) (UA) image 56
DLC (bit, byte, binary shift and other) (UA) image 57
DLC (bit, byte, binary shift and other) (UA) image 58
DLC (bit, byte, binary shift and other) (UA) image 59
DLC (bit, byte, binary shift and other) (UA) image 60

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 може покласти ваш світ чи навіть гру, можливий навіть синій екран

Бітовий зсув


DLC (bit, byte, binary shift and other) (UA) image 81
DLC (bit, byte, binary shift and other) (UA) image 82
DLC (bit, byte, binary shift and other) (UA) image 83
DLC (bit, byte, binary shift and other) (UA) image 84

Бітовий зсув - це переміщення бітів у двійковому числі вліво або вправо. Коли біт виходить за межі числа, він втрачається, а нові біти заповнюють порожні місця.

Виконуючи бітовий зсув, ми в результаті змінюємо десяткове значення на виході.

Максимальне значення, обмежене тільки розрядністью програми чи гри

Використаю візуальну демонстрацію.

Візьмемо 13, що звичайно виглядає так

Тепер зробимо зсув вліво на 5

Перемістивши на 5 вже маємо не 13, а 416

Хоча 1101 підходить і для 13 та 416 просто знаходять в іншому місці byte

Ось відео для більш наглядного розуміння

https://youtu.be/fHAFPdr4fiU?si=QlpoHuUFe-8Y9aj0

Схема


DLC (bit, byte, binary shift and other) (UA) image 99
DLC (bit, byte, binary shift and other) (UA) image 100

В постійному комбінаторі задаються дані/значення, далі вони потрапляють в комбінатор який керує бітовим зсувом: на значення 1,2,3..... та напрям вправо (>>) чи вліво (<<)

Далі сигнал йде до Арифметичних комбінатор, що у нашому випадку разом відіграють роль 1 byte чи 8 bit

З них вже сигнал йде в комбінатор який ділить на остаток (%) *число* % 2

Як працюють сегменти/сигнали дисплея


DLC (bit, byte, binary shift and other) (UA) image 105
DLC (bit, byte, binary shift and other) (UA) image 106
DLC (bit, byte, binary shift and other) (UA) image 107
DLC (bit, byte, binary shift and other) (UA) image 108

Візьму дисплей із гайду

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