Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ N-ный бит

Автор: suriv 30.04.2005 20:02

есть число. (integer) проверить установлен ли в нем N-ый бит
Строки не использовать
ничего в голову не лезет помогите кто-нить,хотя бы на мыслю наведите

Автор: volvo 30.04.2005 20:07


var n: integer;
...
if (n and (1 shl 5)) = (1 shl 5) then { 5-ый бит установлен }
else { не установлен }


Автор: suriv 30.04.2005 20:17

Спасибо... ;)
тока насчет shr/shl читал- непонял может кто-нить объяснит или ссылку даст ?

Автор: volvo 30.04.2005 20:31

x := x SHL n;
x := x SHR n;

SHL - сдвигает битовое представление переменной X на N бит влево (SHR соответственно - вправо)... При этом те биты, которые "уходят" за пределы разрядности числа теряются, а освободившееся место с другой стороны заполняется 0 (всегда при сдвиге влево и иногда - при сдвиге вправо) или 1 (только при сдвиге вправо отрицательных значений одного из типов: ShortInt, Integer или LongInt) smile.gif

Автор: suriv 30.04.2005 20:38

thx :p4:

Автор: FreeMan 1.11.2005 13:36

Ну если понял, то сделай из числа 1 (a:=1) число 22. можно использовать сдвиги, сложение (переменных) и ещё одну переменную (b:=1).

М
Freeman, ты чего ? Теме то уже 7 месяцев rolleyes.gif
klem4