Сейчас на форуме: vasilevradislav (+2 невидимых)

 eXeL@B —› Оффтоп —› hex последовательность
Посл.ответ Сообщение


Ранг: 156.2 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 09 мая 2009 23:01
· Личное сообщение · #1

Народ, помогите придумать, как можно в цикле перебрать такую последовательность(дана в hex виде).
Никак не могу придумать формулу.

$400000, $200000, $100000, $80000, $40000, $20000, $10000,
$8000, $4000, $2000, $1000, $800, $400, $200, $100,
$80, $40, $20, $10, $8, $4, $2, $1.




Ранг: 156.2 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 09 мая 2009 23:17
· Личное сообщение · #2

хм...я уже сам понял, что это деление на $2




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 09 мая 2009 23:19
· Личное сообщение · #3

shr eax,1
жесть формула




Ранг: 156.2 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 10 мая 2009 01:07 · Поправил: Mavlyudov
· Личное сообщение · #4

Я тут накодил в связи с этой формулой небольшой кодес, но вот не могу понять,
почему неверно работает в первом варианте, а во втором верно.

Code:
  1. var
  2.   a,num,hexdiv:longword;
  3.   i,sh:byte;
  4.   bits: array[1..23] of boolean;
  5. begin
  6.   num:=$96004B75;
  7.   HexDiv:=$400000;
  8.   sh:=22;
  9.   for i := 1 to 23 do
  10.   begin
  11.     bits[i] :=( (((num shr 8) and $7FFFF) and hexdiv) shr sh ) = 1; //'Первый вариант'
  12.  // bits[i] :=( (((num shr 8) and $7FFFFFF) and HexDiv)=HexDiv) ; //'Второй вариант'
  13.     hexdiv:=HexDiv shr 1;
  14.     sh:=sh-1;
  15.     write(ord(bits[i]), ' ');
  16.  end;
  17.   readln;
  18. end.

Результаты по двум вариантам:
первый выводит:
0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1
второй выводит:
0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 10 мая 2009 10:17
· Личное сообщение · #5

Видимо, потому, что маски разные. В первом случае она меньше, отсюда и зануляются лишние биты.
З.Ы. Имхо, в маске 1 F пропустил, чо-то символов в ней 7.
З.З.Ы. Под отладчиком самому лень погонять?




Ранг: 156.2 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 10 мая 2009 15:09
· Личное сообщение · #6

Archer
Хм. Я нашел ошибку: в первой маске нехватает одной F, а во второй одна F лишняя




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 10 мая 2009 21:52
· Личное сообщение · #7

Закрыть что ль можно, закрывай тогда.


 eXeL@B —› Оффтоп —› hex последовательность

У вас должно быть 20 пунктов ранга, чтобы оставлять сообщения в этом подфоруме, но у вас только 0

   Для печати Для печати