00085. Работа с битами переменных

Работа с битами переменных|Если вы изучали "Программирование" или "Основы цифровой техники", то эту тему вам без труда понять. Если же нет - будем сейчас изучать.|wmysterio|wmysterio||||Начнём с того, что каждая переменная состоит из битов. Бит - значение, которое может принимать значение 0 или 1. Их совокупность формирует какую-то информацию ( например: целое число ). Остановимся сы как раз на целых числах. Каждая переменная этого типа может иметь 32 бита. Пример: число 62 - это тоже самое, что и комбинация битов 111110, но это число не стоит воспринимать как десятичное. Здесь 111110 записано в двоичной системе числения, которые, как известно, состоит из ряда двух чисел - 0 или 1. В зависимости от порядка их размещения мы получаем разные результаты. Например: если мы поменяем последние цифры местами ( 111101 ) то результат будет - 61.

Как же собственно перевести число в двоичную систему числения? Хороший вопрос. Всё довольно просто. Нужно десятичное ( обычное для нас ) число постоянно делить на число 2 нацело. После чего в остатке в нас всегда будет число 0 или 1. Результат делим опять на 2 и так до тех пор, пока делить уже будет невозможно. В результате мы берём все остатки ( должен получится список чисел 0 и 1 ). После этого запишем это число в обратном направлении. Тоесть если мы получили комбинацию 011011, то результатом будет комбинация - 110110. Чтобы было понятнее, посмотрите картинку:

Как видите число 75 делили на 2. В нас вышло число 37, так как делить нужно на цело ( без дробной части ). 37*2 даёт 74. В результате вычитания мы получаем число комбинации - 1. Если вы тестируете и результат вышел более чем 1, то вы допустили ошибку. Затем результат ( 37 ) мы снова делим на 2 и результатам будет 18, а остаток 1. Мы получаем вторую цифру комбинации и в результате комбинация будет иметь вид - 11. Так по-аналогии вычисляем комбинации. Когда в результате деления будет число 1, то известно, что его поделить нацело на 2 нельзя, поэтому он перемещается автоматически в комбинацию битов. Собственно мы её получили - 1101001. Теперь нам осталось поменять местами эту комбинацию в обратную сторону ( смотрите вторую строку и по цвету увидите как нужно перемещать ). Мы получим комбинацию - 1001011. Это наше число 75 в двоичной системе числения. Не верите? Сделаем эксперимент!

Запустите калькулятор на вашем ПК. Выберите пункт "Вид->Программист".

Выберите "8 байт" на панели и установите чекбокс на "BIN". Теперь для ввода цифр в нас доступно только цифры 0 и 1:

Введите нашу битовою комбинацию:

Изменим чекбокс с "Bin" на "Dec" и что мы видим?

Всё верно! Комбинация битов в результате вычисления на калькуляторе совпало с нашим числом - 75!

Теперь расскажу о порядке битов. Комбинация 1001011 состоит из 7 битов ( так, как там 7 чисел ). Каждый их них имеет свой порядковый номер, который начинается с нуля ( нулевой бит ). Максимальный же - 31-й бит. Можно сформировать таблицу битов:

Номер бита
Числовое значение

0

1

1

1

2

0

3

1

4

0

5

0

6

1

К-во битов: 7

Комбинация: 1001011

Можно сделать вывод, что биты читаются справа налево. Естественно, для подобных случаев пользуйтесь калькулятором для переводов. Я здесь расписал для того, что бы вы поняли откуда всё берётся :)

Собственно, зачем всё это нужно? Очень даже нужно! Например: при редактировании игровой памяти, где во многих случаях нужно будет изменять значения, которые изменяются только по битам.

Рассмотрим опкоды:

Задать переменной бит в числовое значение 1.

Здесь: 0@ - нужная переменная 1 - номер бита ( см. таблицу выше )

Задать переменной бит в числовое значение 0 ( очищает бит от значения 1 ).

Здесь: 0@ - нужная переменная 1 - номер бита ( см. таблицу выше )

Так же можно проверить "Бит переменной равен 1?":

Здесь: 0@ - нужная переменная 1 - номер бита ( см. таблицу выше )

Обратите внимание, что проверять можно только на единицу. Для того, что бы проверить "Бит переменной равен 0?" нужно:

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

Будет время, покажу вам как сделать вот такую вот ветку талантов, из моего скрипта Warlock:

|919|1|0|23691172`png`453`285`400`251``\|59363386`png`419`383`399`365``\|39305871`png`417`380`400`364``\|14749138`png`407`67`400`65``\|20373833`png`419`383`399`365``\|32440651`png`500`300`400`240``\||rabota_s_bitami_peremennykh|1499848405

Last updated

Was this helpful?