Массив с нулём
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
- aissp
- Маньяк
- Сообщения: 2710
- Зарегистрирован: 07 ноя 2005, 09:51
-
- Маньяк
- Сообщения: 1510
- Зарегистрирован: 26 фев 2006, 10:00
- Откуда: offline
-
- Маньяк
- Сообщения: 1510
- Зарегистрирован: 26 фев 2006, 10:00
- Откуда: offline
-
- Маньяк
- Сообщения: 1510
- Зарегистрирован: 26 фев 2006, 10:00
- Откуда: offline
- aissp
- Маньяк
- Сообщения: 2710
- Зарегистрирован: 07 ноя 2005, 09:51
-
- Маньяк
- Сообщения: 1510
- Зарегистрирован: 26 фев 2006, 10:00
- Откуда: offline
- ajkj3em
- Маньяк
- Сообщения: 2063
- Зарегистрирован: 12 ноя 2006, 06:53
tiasur писал(а):Идея предложенная ajkj3em кажется единственной возможной, ну или хотя бы легко понятной.
sz прав, меня там взглюкнуло, i^(i-1) выставляет верхний бит только для нуля
(edit) шутка :)
Последний раз редактировалось ajkj3em 26 мар 2007, 11:21, всего редактировалось 1 раз.
-
- Маньяк
- Сообщения: 1510
- Зарегистрирован: 26 фев 2006, 10:00
- Откуда: offline
- ajkj3em
- Маньяк
- Сообщения: 2063
- Зарегистрирован: 12 ноя 2006, 06:53
хехе .. нет, он таки не прав 0x80000000 --- i^(i-1) ---> 0xfffffffftiasur писал(а):попытаюсь вечером осилитьajkj3em писал(а):tiasur писал(а):Идея предложенная ajkj3em кажется единственной возможной, ну или хотя бы легко понятной.
sz прав, меня там взглюкнуло, i^(i-1) выставляет верхний бит только для нуля
- sz
- Маньяк
- Сообщения: 1266
- Зарегистрирован: 17 фев 2003, 19:34
Хех. Поймал. Неправ, фактическиajkj3em писал(а):хехе .. нет, он таки не прав 0x80000000 --- i^(i-1) ---> 0xfffffffftiasur писал(а):попытаюсь вечером осилитьajkj3em писал(а):tiasur писал(а):Идея предложенная ajkj3em кажется единственной возможной, ну или хотя бы легко понятной.
sz прав, меня там взглюкнуло, i^(i-1) выставляет верхний бит только для нуля

- ajkj3em
- Маньяк
- Сообщения: 2063
- Зарегистрирован: 12 ноя 2006, 06:53
я тут псевдо-теоретическое обоснование придумал :)sz писал(а):Хех. Поймал. Неправ, фактически :)
все по-битовые операции работают "однородно" для всех значений int.
то есть если нам надо поймать именно ноль, то нужно использовать
операцию, в которой ноль являетcя "особенным значением" (если
смотреть на биты input'а и output'а). из "легких" операций такой явлаетcя
только минус .. отcюда и пляшем.
-
- Маньяк
- Сообщения: 1510
- Зарегистрирован: 26 фев 2006, 10:00
- Откуда: offline
Я еще много страниц назад пытался умножать на минус единицу, но это работает для положительных чисел. А вот так красиво складывать отрицательные с положительными не дошло до меняajkj3em писал(а):я тут псевдо-теоретическое обоснование придумалsz писал(а):Хех. Поймал. Неправ, фактически
все по-битовые операции работают "однородно" для всех значений int.
то есть если нам надо поймать именно ноль, то нужно использовать
операцию, в которой ноль являетcя "особенным значением" (если
смотреть на биты input'а и output'а). из "легких" операций такой явлаетcя
только минус .. отcюда и пляшем.

- Baguk
- Маньяк
- Сообщения: 2365
- Зарегистрирован: 25 янв 2007, 12:55
- Откуда: UA->AZ->IL->CA
- Azazello
- Житель
- Сообщения: 769
- Зарегистрирован: 16 янв 2007, 04:31
Да, я тоже подумал о том, чтобы дописать ноль в конец массива. Заменить последний элемент на ноль даже лучше.Baguk писал(а):Оптимизация поиска проста: проверяется последний элемент на ноль. Если не ноль, то заменяется нулём. После этого вместо 2-х проверок (ноль или конец массива) надо проверять только на ноль. В 2 раза меньше сравнений.
-
- Маньяк
- Сообщения: 1510
- Зарегистрирован: 26 фев 2006, 10:00
- Откуда: offline
Задача другая была.Azazello писал(а):Да, я тоже подумал о том, чтобы дописать ноль в конец массива. Заменить последний элемент на ноль даже лучше.Baguk писал(а):Оптимизация поиска проста: проверяется последний элемент на ноль. Если не ноль, то заменяется нулём. После этого вместо 2-х проверок (ноль или конец массива) надо проверять только на ноль. В 2 раза меньше сравнений.