Tomsk Sysadmins Forum
Windows => Программирование => Topic started by: Shtafun on September 27, 2006, 16:32:37
-
Мне нужно прочитать с начала файла всего 32 бита, а затем выделять группы по несколько бит (и работать потом с ними), например, первый 5 битов отвечают за одно, затем 2 бита за другое и т.д.
-
Мне нужно прочитать с начала файла всего 32 бита, а затем выделять группы по несколько бит (и работать потом с ними), например, первый 5 битов отвечают за одно, затем 2 бита за другое и т.д.
читай двойными словами (DWORD), для работы с нужной группой бит накладывай маску логическим AND, при необходимости/для удобства делай сдвиг вправо на нужно кол-во разрядов и сравнивай... imho все прозрачно.
-
читай двойными словами (DWORD), для работы с нужной группой бит накладывай маску логическим AND, при необходимости/для удобства делай сдвиг вправо на нужно кол-во разрядов и сравнивай... imho все прозрачно.
Давай на примере:
есть AAABBCCD слово.
1. Вопрос я не знаю какой считается 0 битом и какой 8 битом
2. У меня есть инфа x бит и даны смещения : на примере смещение 2 что даст?
-
Давай на примере:
есть AAABBCCD слово.
0xAAABBCCD=10101010101010111011110011001101
1. Вопрос я не знаю какой считается 0 битом и какой 8 битом
общепринято считать справа налево. соответственно 0 бит = 1, 8 бит = 0.
2. У меня есть инфа x бит и даны смещения : на примере смещение 2 что даст?
по смещению 2 стоит взведенный бит.
-
0xAAABBCCD=10101010101010111011110011001101
общепринято считать справа налево. соответственно 0 бит = 1, 8 бит = 0.
по смещению 2 стоит взведенный бит.
Ясно, а как мне выделить блок например из 4 бит?
-
Ясно, а как мне выделить блок например из 4 бит?
наложи маску. например, если нужно выделить блок из 4 бит по смещению 2, делаешь
0xAAABBCCD AND 0x3C (111100) = 0xC (1100)
-
наложи маску. например, если нужно выделить блок из 4 бит по смещению 2, делаешь
0xAAABBCCD AND 0x3C (111100) = 0xC (1100)
Спасибо, теперь все понятно
-
Давай на примере:
есть AAABBCCD слово.
1. Вопрос я не знаю какой считается 0 битом и какой 8 битом
2. У меня есть инфа x бит и даны смещения : на примере смещение 2 что даст?
А это зависит от того, что за данные ты обрабатываешь - гляди в спецификацию их формата. Если это просто поток бит, то обычно в байте передается первым старший бит. Если слова - то тут уже зависит от представления Big Endian / Little Endian, и т.д.
-
Давай на примере:
есть AAABBCCD слово.
1. Вопрос я не знаю какой считается 0 битом и какой 8 битом
2. У меня есть инфа x бит и даны смещения : на примере смещение 2 что даст?
А это зависит от того, что за данные ты обрабатываешь - гляди в спецификацию их формата. Если это просто поток бит, то обычно в байте передается первым старший бит. Если слова - то тут уже зависит от представления Big Endian / Little Endian, и т.д.