Разбить число на байты и проверить их последовательность

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Сионист писал(а): Звать этот тип могут и long long int, и даже hyper.
Я прям не могу уже... Я тебя спрашиваю, как хранится число? Ты мне отвечаешь, что оно может быть любым целым числом. Я тебе даю программу, которая учитывает все целые числа. Ты мне в ответ начинаешь писать про то, что обёртки - это плохо и показываешь свой код, который работает только для int. Я тебе объясняю, что если бы я знал, что это будет только int, то тоже написал всё проще. На что ты мне говоришь, что это может быть и любое другое целочисленное число - на этом месте я чуть было не застрелился... Ты определись. А то ты говоришь одно, потом делаешь сам совсем другое, и критикуешь меня за решение, постоенное на твоих же словах, а затем снова возвращаешься к своему первому варианту. Выходит, твоя программа тоже никуда не годится, да? Она ведь не для всех целых чисел работает.

Раз уж на то пошло, я, наконец-то, решил разобрать твой алгоритм. Знаешь, что я тебе скажу... да у меня просто слов нет. Твой последний вариант полностью аналогичен моему, общую идею которого я выдал ещё на первой (!) странице данной темы. Вот только твой вариант написан крайне запутанно (мне понадобилось отдебажить, чтобы понять его). Ты в течении недели яростно спорил о том, что нельзя перебирать число побайтно и сам сейчас перебираешь его побайтно. Ты спорил о том, что в байте может быть больше 8 бит, но сам используешь 8 битный байт в качестве "части" числа. Ты потратил больше недели на оптимизации, выкладывал 3 варианта, всё это время флудя и поливая грязью моё решение, и, наконец-то, в последнем варианте ты дошёл до того, что можно использовать вспомогательный массив из sizeof(x) байтов, окончательно превратив алгоритм в мой алгоритм, выложенный ещё на первой странице. Я просто в шоке... Внимательно посмотри на то, что написано у меня, и поймёшь, что это то же самое, только написанное куда более понятно, так как вспомогательный массив у меня явно сделан массивом, что упрощает доступ к его байтам и делает ненужными страшные взятия адресов, сдвиги и последующий разыменования, которые делаются у тебя. Это единственное отличие! В остальном алгоритм один в один. Ты потратил на это неделю писанины и пару часов плевания на код человека, который выложил тебе правильный алгоритм сразу же... Тут вариантов два. Либо ты не прочёл мой алгоритм и сам дошёл до того же, убив кучу времени. Либо ты, наконец-то, понял, что моё решение - это именно то, что нужно и тихонько сделал переделку своей программы под мой алгоритм, так как никогда не признаёшь своей неправоты. Вот скажи, стоило это убитого времени и потраченных нервов (как твоих, так и моих)?
Сионист писал(а): 1. Для древностей можно написать кроскомпилятор, который сам будет работать на AMD64. Проблема здесь не в языке, а в памяти: сама прога в них тупо не влезет.
2. Октет в роли байта не только не сразу был принят. Нет гарантии, что экзотика не появится снова. С компилятором..
"Можно написать", "нет гарантии". Ты сам от своей занудности ещё не устал? Я тебе даю гарантию, что на таких платформах твоя программа никогда не будет собираться и выполняться. И это знаю не только я, но и ты сам. Просто у тебя настроение поспорить. Впрочем, оно у тебя всегда такое :)

Впрочем, это всё уже не важно, так как твоё последнее решение полностью аналогично моему, так что можешь любую критику, направленную на мой код, перенаправлять на свой, не меняя ни слова.
somewhere писал(а): Это было во времена 486-го процессора. Сейчас это время сократилось на порядок.
Об этом даже не спорю. Но, к сожалению, даже та же студия 2010 по умолчанию оптимизирует генерируемый код под 586 процессор и чтобы включить хотя бы MMX, не говоря уже об SSE, нужно руками залезть в настройки и поменять их.

Как бы там ни было, даже в случае SSE каждый программист должен понимать, что "умножить" работает намного дольше, чем "сложить".

Да и вообще, Бог с ней, с этой оптимизацией. Как видно из моих слов выше, человек уже дошёл наконец-то до того, что деления и остатки от деления не нужны, сделав полный аналог моего алгоритма, хотя так и не признав, что мой алгоритм наиболее оптимален и правелен для данной задачи.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

Как бы там ни было, даже в случае SSE каждый программист должен понимать, что "умножить" работает намного дольше, чем "сложить".
По моему плавающую точку наоборот проще умножать чем складывать. Хоть в железе, хоть софтверно.
2B OR NOT(2B) = FF
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Absurd писал(а):По моему плавающую точку наоборот проще умножать чем складывать. Хоть в железе, хоть софтверно.
Речь о целых :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Я тебе даю программу, которая учитывает все целые числа.
Где у меня какой скрытый еврейский смысл? Любого типа. Одного. Не всех подряд, а одного. Просто он заранее не известен и в разных версиях программы может не совпадать. Но в каждой версии это всего лишь одна единственная переменная заведомо одного типа. Вы открытие физического закона от решения в общем виде задачи по физике отличаете? Вы пытаетесь сформулировать закон, а нужно решение в общем виде, но одной единственной задачи и подстановка в итоговую формулу конкретных значений.
Ты мне в ответ начинаешь писать про то, что обёртки - это плохо и показываешь свой код, который работает только для int.
Разве? Обёртка - это очень хорошо, но лишняя обёртка - это слегка плохо.
о обёртки - это плохо и
С какой стати он должен перестать работать после замены int на unit64_t, unit16_t, uint32_t, unsigned long long int, или какой нибудь отсутствующий в сегодняшнем стандарте unsigned long long long long int?
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Сионист, хватит уже флудить. Чего ты к цепляешься к ничего не значащим мелочам?

Ты о самом главном, как всегда, так ничего и не сказал. Ты признаёшь, что твой последний вариант полностью аналогичен тому варианту, что я выдал ещё на первой странице? Оптимизировал, оптимизировал, и в результате пришёл к тому же. Красавец вообще :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить