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