Сначало посчитаем что получается исходя из известных переменных Ubit и Lbit (даже переменные говорят сами за себя старший и младшие биты

). В итоге:
- Код: Выделить всё
S=(2^(15+1)-1) and (not 2^8-1)
далее
- Код: Выделить всё
S=(65535) and (not 255)
так как выражения здесь является сбросом битов (аля
v& = v& and (not 64) описаного тобою выше) то, значит мы сбрасываем младшие биты
0 - 7 и в результате в переменной получаем старшие биты
8 - 15.
Так я понимаю нужно применять те же битовые операции)))
pronto, спс за твои уроки))) Мне до жути интересно с этим делом освоиться, потому как часто встречаю в коде разнообразные битовые операции, но не мог их понять)))
Применимы ли битовые операции к
массивам??
И еще вопрос: как считать биты 0-3 и 8-15??
Чтобы было примерно так:
- Код: Выделить всё
1111 1111 0000 1111
вот мое решение:
- Код: Выделить всё
1. S=(2^16-1) And ((Not 2^8-1) And (2^4-1))
Или же?
- Код: Выделить всё
2. S=((2^16-1) And (Not 2^8-1)) And (2^4-1)
что-то я по-моему совсем запутался

Я иногда не понимаю как And работает(( Если в связке if..Then (проверка двух чисел) или строковых переменных, где является конкатенацией. Но вот с битами? Разве во втором примере результат не будет равен лишь младшим битам 0-3, потому как:
Это сброс всех бит, кроме 2 и 3 бита
- Код: Выделить всё
v& = v& and 12
И в первом примере тот же результат??
Предполагаю здесь лучше использовать сдвиг вправо, сброс младших 4 бит, потом сдвиг влево - верно?
Немного посчитал и вот:
- Код: Выделить всё
S=( ((2^16-1)/16) And (Not 2^4-1) )*16
PS
Mikle, благодарю! Обязательно так и буду делать! Я вот, точно не помню, разве не здесь нельзя было править сообщение, после того как прошло более 5 минут??