Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1456844768
Мишаня
2016-03-01 18:06
2018.03.04
Вопрос по SQL


2-1458046128
Макака
2016-03-15 15:48
2018.03.04
Создание потоков


2-1458036962
Макака
2016-03-15 13:16
2018.03.04
Очистить множество


2-1456839307
Советник
2016-03-01 16:35
2018.03.04
Android vs Win7


2-1457082837
guest
2016-03-04 12:13
2018.03.04
TOutlookApplication и задержки в аутлуке...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский