![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Биты
Dmk © (2016-03-04 10:49:00)Всем привет! Интересный момент получается. Есть исходный адрес + строка битов длиной 310 байт. Это 2480 бит. Как корректно вычислить в каком байте находится последний бит? Вычисляю так: Смещение := (x shr 3). Получается 310 байт, а если 2479 поделить на 8, то смещение получается 309 байтов, а биты находятся в одном и том же байте, соседние. Как быть? Не вычитать же из смещения единицу, ведь в нулевом байте это будет минус и случится AV. Ведь корректное смещение все еще остается 309, т.к. отсчет начинается с нуля - 0..309, а 310 - фактически 311-й байт следующей строки.
Sha (2016-03-04 16:30:00) [1]если i=0..2479,
то маска для i-того бита = 1 shl (i and 7) and a[i shr 3]
Dmk (2016-03-04 11:58:00) [2]Теперь корректно: Смещение := ((x - 1) mod 8); И позиция в байте := 7 - ((x - 1) mod 8).
Dmk (2016-03-04 11:55:00) [3]В моем случае бит был 2480-й в диапазоне 1..2480, а на самом деле он 2479-й в диапазоне 0..2479.
Dmk (2016-03-04 11:55:00) [4]Поэтому он и лез в следующий байт ;)
han_malign (2016-03-04 11:52:00) [5]> //в слове класс два с
Dmk (2016-03-04 11:52:00) [6]>han_malign © (04.03.16 11:50) [4]
Уже. Надо считать 0..15, а в моем случае было 1..16. Тогда бит переползал в следующий байт.
Dmk (2016-03-04 11:51:00) [7]Да все, разобрался. Некорректно X вычислял. Надо (X - 1), т.е. коррекция на ноль. Тогда точно байт вычисляется.
han_malign (2016-03-04 11:50:00) [8]мастер-клас
Проверь свои умозаключения на модели 2-байта = 16 бит.
Затем преврати 2/16 в n/n*8 - и поверь, что при n=310 - всё будет работать абсолютно точно так же...
Dmk (2016-03-04 11:39:00) [9]>У тебя строка из не целого количества байт что ли состоит? Что это вообще такое?
Просто битовое изображение BPP = 1.
DVM (2016-03-04 11:31:00) [10]
> У тебя строка из не целого количества байт что ли состоит?
Это я к тому, зачем вообще писать что в ней столько то БИТ.
DVM (2016-03-04 11:30:00) [11]
> строка битов длиной 310 байт
У тебя строка из не целого количества байт что ли состоит? Что это вообще такое?
Если же строка (массив) состоит как у нормальных людей из целого количества байт, то очевидно последний бит находится в последнем байте.