| eXeL@B —› Программирование —› Обнулить все младшие биты |
| Посл.ответ | Сообщение |
|
|
Создано: 10 апреля 2013 22:01 · Личное сообщение · #1 |
|
|
Создано: 10 апреля 2013 22:03 · Поправил: ZaZa · Личное сообщение · #2 Nimnul AND? 1100 1100 AND 1111 0000 = 1100 0000 1100 0000 AND 1100 0000 = 1100 0000 1100 0000 AND 1000 0000 = 1000 0000 Так сойдет? ![]() Nimnul пишет: Должен остаться только старший бит. Чую я, что как минимум без одного сравнения на ноль тут не обойтись... Перебирать в цикле по "И" от младшего к старшему байту, примерно так, как указано выше... Затем сравнивать на ноль, и если равно, тогда брать предыдущий результат. Теоретически - как-то так... ----- One death is a tragedy, one million is a statistic. ![]() |
|
|
Создано: 10 апреля 2013 22:05 · Поправил: Nimnul · Личное сообщение · #3 |
|
|
Создано: 10 апреля 2013 22:08 · Поправил: Nimnul · Личное сообщение · #4 |
|
|
Создано: 10 апреля 2013 22:14 · Личное сообщение · #5 |
|
|
Создано: 10 апреля 2013 22:16 · Поправил: Nimnul · Личное сообщение · #6 |
|
|
Создано: 10 апреля 2013 22:20 · Личное сообщение · #7 |
|
|
Создано: 10 апреля 2013 22:28 · Личное сообщение · #8 |
|
|
Создано: 10 апреля 2013 22:36 · Поправил: Nimnul · Личное сообщение · #9 |
|
|
Создано: 10 апреля 2013 22:42 · Поправил: Veliant · Личное сообщение · #10 тогда у меня для вас еще оригинальное решение Code:
Чем не решение? В функции log2 может быть цикл с условиями | Сообщение посчитали полезным: DimitarSerg, Nimnul |
|
|
Создано: 10 апреля 2013 22:53 · Поправил: Nimnul · Личное сообщение · #11 |
|
|
Создано: 10 апреля 2013 23:01 · Личное сообщение · #12 Вот хороший материал по теме: http://graphics.stanford.edu/~seander/bithacks.html Там есть: Finding integer log base 2 of an integer (aka the position of the highest bit set) | Сообщение посчитали полезным: Nimnul |
|
|
Создано: 11 апреля 2013 00:08 · Поправил: Nimnul · Личное сообщение · #13 |
|
|
Создано: 11 апреля 2013 01:02 · Личное сообщение · #14 |
|
|
Создано: 11 апреля 2013 06:29 · Поправил: Zorn · Личное сообщение · #15 |
|
|
Создано: 11 апреля 2013 09:56 · Личное сообщение · #16 Zorn Я забыл сказать что если a == 0 или другое то остальные числа не меньше нуля. Короче говоря задача найти большее из четырех. Как доп. бонус известно что a > b > c > d, но они могут быть равны 0, при этом остальные числа не меньше нуля например a = 0, b = 100, c = 50, d = 10 или a = 0, b = 0, c = 500, d = 100 ----- have a nice day ![]() |
|
|
Создано: 11 апреля 2013 10:51 · Личное сообщение · #17 Задача #2 Идея найдена на просторах инета. Проверена, вроде работает. Code:
----- 127.0.0.1, sweet 127.0.0.1 | Сообщение посчитали полезным: Nimnul |
|
|
Создано: 11 апреля 2013 11:28 · Личное сообщение · #18 |
|
|
Создано: 11 апреля 2013 15:36 · Личное сообщение · #19 Nimnul пишет: Работает но медленнее чем на ифах. Даже чисто ассемблерная реализация работает медленнее. Code:
----- 127.0.0.1, sweet 127.0.0.1 | Сообщение посчитали полезным: Nimnul |
| eXeL@B —› Программирование —› Обнулить все младшие биты |











Для печати