VirQ. Что такое бит в C#
Язык C# входит в ТОП-5
самых популярных языков
программирования
Главная / Целочисленные переменные /
Что такое бит
Статей на сайте: 61

Что такое бит


Бит, это 1/8 часть 1 байта. Данные на жёстком диске, на компакт-диске сохраняются в виде 0 и 1 на физическом уровне.
Например, на диске это выглядит так:


Например, слово "Word" запишется так на поверхности любого хранилища:
01010111011011110111001001100100
Чтобы было понятнее:
W - 01010111 (код буквы 87)
o - 01101111 (код буквы 111)
r - 01110010 (код буквы 114)
d - 01100100 (код буквы 100)
О переводах из 10-тичной системы в 2-ичную рассказывается тут

8 бит = 1 байту.
Очень удобно сохранять множественную информацию (вкл/выкл) в 1 байте.
Например, знакомые вам из Microsoft Word 3 буквы ЖКЧ (жирный, курсивый, подчёркнутый).
Жирный - это 1-ый бит
Курсивный - это 2-ой бит
Подчёркнутый - это 3-ий бит

Байт будет выглядеть так
00000001 - жирный
00000011 - жирный и курсивный
00000111 - жирный, курсивый и подчёркнутый
00000110 - курсивый и подчёркнутый

Первый бит считается справа налево.
Получается, мы задействовали всего 3 бита из 8 для хранения этих параметров.
Сюда добавим зачёркнутый шрифт
00001010 - зачёркнутый курсивный
и так далее.

В разработке Windows приложений есть перечисление FontStyle
[code] public enum FontStyle { Regular = 0, Bold = 1, Italic = 2, Underline = 4, Strikeout = 8, } [/code]
Немного подробнее:
0 - 00000000
1 - 00000001 (1-ый бит отвечает за жирность)
2 - 00000010 (2-ой бит отвечает за курсивность)
4 - 00000100 (3-ий бит отвечает за подчёркнутость)
8 - 00001000 (4-ый бит отвечает за зачёркнутость)
Суммируя все числа получаем нужную комбинацию.
Например, курсивный (2) и подчёркнутый (4) это 2+4 = 6
00000010 + 00000100 = 00000110

Для получения какого-то бита из числа напишем несложную функцию:
[code] static int GetBit(int number, int numberBit) { return number >> (numberBit - 1) & 1; } [/code]
Здесь используются операции побитового смещения
В данном случае объяснить функцию надо с конца. Что такое & 1.
Это объединение битов двух чисел. Например:
0010110101
0000000001 (это и есть наша 1 в конце выражения)
Выполняем операцию "&". Подробнее тут
Получаем 1.

Если нам надо получить 1-ый бит, то смещаем на 0
Если надо получить 3-ий бит, то смещаем на 2
Если 4-ый, то на 3.
Поэтому и стоит там выражение numberBit - 1
Ну и с помощью >> мы делаем смещение
При смещении на 0 бит, из 0010110101 получим то же самое. См ниже:
0 - 0010110101
1 - 001011010
2 - 00101101
3 - 0010110
4 - 001011
И так далее.
И каждый раз с помощью & 1 забираем первый бит (визуально, это последняя цифра числа).

Дополнительная информация о том, как вывести результат в консоли или WinForm