- 1
- 2
- 3
- 4
- 5
- 6
- 7
function GetBit(numBit,Val: integer):boolean;
var
i: integer;
begin
i := round(power(2,numBit-1));
result := (i and Val) >0;
end;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+101
function GetBit(numBit,Val: integer):boolean;
var
i: integer;
begin
i := round(power(2,numBit-1));
result := (i and Val) >0;
end;
Суровые и беспощадные битовые операции в дельфи. Причем коллега, у которого я это нашел неплохие программы пишет, во всяком случае по части удобства интерфейса мне до него далеко. Но иногда такие перлы встречаются.
Vasiliy 17.03.2014 13:30 # −1
>round(power(2,numBit-1));
нах round ?
absolut 17.03.2014 13:35 # +1
а где-то сказано, что коллега числится на должности спеца по юзабилити?
>нах round ?
так ровнее, а может просто power возвращает вещественное число.
>numBit-1
а в паскале индексация от единицы? уже запамятовал
Vasiliy 17.03.2014 13:58 # 0
kipar 17.03.2014 14:13 # 0
Именно. Это вещественная степень вещественного числа, в этом и говно.
>а в паскале индексация от единицы? уже запамятовал
Биты можно как угодно нумеровать. Но кстати когда я не думаю заменил это на свою няшную функцию нумерующую биты с нуля, то полчаса не мог понять что происходит.
TarasB 17.03.2014 14:39 # +3
bormand 17.03.2014 21:57 # 0
TarasB 18.03.2014 14:29 # +2
eandr67 17.03.2014 14:43 # +6
Вся эта функция сводится к выражению (Val and (1 shl NumBit))<>0, или (Val and (1 shl (NumBit-1)))<>0 (если нумеровать биты с 1)
Dummy00001 18.03.2014 00:25 # 0
bormand 18.03.2014 05:37 # +1
Ты так говоришь, как-будто в С их включили, и не приходится писать говно в духе
kegdan 18.03.2014 08:12 # 0
eandr67 18.03.2014 08:51 # 0
absolut 18.03.2014 14:17 # +2
TarasB 18.03.2014 14:30 # +1
TarasB 18.03.2014 14:29 # 0