|
|
|
Битовая операция
|
|||
|---|---|---|---|
|
#18+
Есть 64 бита (uint в .NET). Надо максимально быстро получить позицию первого ненулевого бита. Например: X = 8; 8 10 == 1000 2 , т.е. надо получить: 3 (нумерация с 0), т.к. первая единица в этой позиции. Пока только цикл приходит на ум: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Или не стоит заморачиваться и использовать такой цикл, потому что экономия на спичках? Распределение 1 в в этих 64 битах среднее, т.е. вероятность встретить 1 на любой позиции одинаковая. Пад'ехалi, лазер уключылi, i кабздец! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 19:45 |
|
||
|
Битовая операция
|
|||
|---|---|---|---|
|
#18+
6374003 - читали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 20:52 |
|
||
|
Битовая операция
|
|||
|---|---|---|---|
|
#18+
miksoft 6374003 - читали? Спасибо за линк. Но у меня .NET, с asm туговато в .NET... Попробую DLL на С++ вызвать с таким кодом в функции, посмотрю на результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2010, 14:23 |
|
||
|
Битовая операция
|
|||
|---|---|---|---|
|
#18+
http://www.hardline.ru/1/5/1388/ Подсчитать номер младшего единичного бита (n должен быть ненулевым): Привет для 32-битного числа. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2010, 14:31 |
|
||
|
Битовая операция
|
|||
|---|---|---|---|
|
#18+
Можно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2010, 21:58 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37030811&tid=1343240]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
189ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 517ms |

| 0 / 0 |
