Куча говна / Говнокод #27440 Ссылка на оригинал

0

  1. 1
1/-~a

Если тоже задолбались писать скобочки

1/(a+1)

Запостил: 3_dar 3_dar, (Updated )

Комментарии (37) RSS

  • А стандарт гарантирует что получится в результате побитовой инверсии всегда?
    Ответить
    • Для знаковых -- нет конечно, он же представление чисел не фиксирует. Но вроде не UB.

      Для беззнаковых гарантирует.
      Ответить
      • В C++20 теперь официальня two's complement:

        [basic.fundamental]
        3 An unsigned integer type has the same object representation, value representation,
        and alignment requirements ([basic.align]) as the corresponding signed integer type.
        For each value x of a signed integer type, the value of the corresponding
        unsigned integer type congruent to x modulo 2^N has the same value of
        corresponding bits in its value representation. [37]
        
        37) This is also known as two's complement representation.
        
        [expr.unary.op]
        10 The operand of ~ shall have integral or unscoped enumeration type;
        the result is the ones' complement of its operand.


        См. также: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0907r1.html (хорошая демонстрация того, почему ме-нять стандарт C++ так сложня).
        Ответить
        • То есть все 50 лет использовали дополнительный код для представления отрицательново говна, и вдруг его решили узаконить?
          Ответить
          • Ну видимо все архитектуры, где было другое представление чисел, вымерли... Осталось little endian принять.
            Ответить
            • Хм
              А причем тут эндиан к способу хранения отр. чисел?

              char будет одинаковый вроде бы, а всё, что больше будет разным и unsigned
              Ответить
              • Ну просто у little-endian и big-endian нет особых преимуществ друг перед другом. Поэтому пора уже раз и навсегда выбрать что-то одно, а второе отправить на помойку истории. Вместе с 9-битными байтами. Раз уж даже ones complement и signed magnitude туда ушло.

                Будет на всех платформах единое представление чисел в памяти, с точностью до бита. Это же охуенно.
                Ответить
                • Ну это авторы процов скорее должны сделать
                  А ща везде одинаковый ордер?

                  Я помню, што у спарков был другой, но спарки уже не нужны

                  two's complement вроде бы самый удобный, позволяющий "не думать" про знак в некоторых операциях, не?
                  Ответить
                  • > two's complement вроде бы самый удобный

                    Ну да, у тебя и сложение и вычитание и знаковых и беззнаковых одной схемой выполняться может. Видимо поэтому оно и победило.
                    Ответить
                  • это у штеудов другой, не как у белых людей
                    при царе горохе для экономии на спичках переносах сделали, так и тянется
                    Ответить
                • как раз хорошая тема на которой можно освоить много грантов
                  Ответить
                • > 9-битными байтами
                  бод-секунда в системе сгс-линукс!
                  Ответить
        • Если говорить о самом приросте штатов, исследования наши показали, что в среднем прирост этот равен 5,75% в год. Это дает нам возможность облечь закон Паркинсона в математическую форму. В любом административном учреждении в мирное время прирост служащих вычисляется по формуле: X = (2s^m+l)/n, где s — количество служащих, набирающих себе подчиненных, чтобы продвинуться по службе; l — количество лет, проведенных на работе; m количество человеко-часов, потраченных на обработку материала; n количество нужных служащих; х — нужное число новых служащих в год.

          Математикам ясно, что для вычисления прироста в процентах надо умножить х на 100 и разделить на число служащих предыдущего года (y). Выглядит это так: 100*(2s^m+l)/y^n %

          Число это неизменно будет где-то между 5,17 и 6,56% независимо от объема работы и даже при полном ее отсутствии.
          Ответить
      • > он же представление чисел не фиксирует
        вот меня это и испугало в коде

        Я вообще все эти игры с битами (сдвиги-хуиги и пр) делаю только если реально нужно рабоатть с отдельными битами, или если беззнаковое число, и охото выебнуца, а знаковые сцу трогать
        Ответить
        • В ассемблере есть сдвиг. Он арифметический. Но бывает и логический. И каждый сдвиг делает РАЗНОЕ.
          Ответить
        • > а знаковые сцу трогать

          Аналогично. Благо битушня ня отрицательных числах нужна чуть менее чем никогда.
          Ответить
    • В lua тильда обозначает как не. a ~= b но вроде бы как в в движке сурс этот оператор переписан на a !=b из за того что тильда залочена на консоль
      Ответить
          • Это сперматозоид стремится к яйцеклетке, глупый (в смысле спермотазоид глупый, а не ты). Ему кто-то сказал, что жить это прикольно
            Ответить
            • >> Ему кто-то сказал, что жить это прикольно
              Очень жестокий троллинг
              Ответить
  • Как работает >> между стримом и строкой?
    // вот тут
    	std::fstream f("c:\\temp\\1.txt");
    	std::string s;
    	f >> s;

    слово считается в кучу, и создастся строка, которой передадут указатель на эту кучу?

    Как вообще стрим, читающий побайтово, буферизирует слово? А если там одно смешное слово на 4 гига?
    Ответить
    • ладно, я подсмотрел код, если вы отвечать не хотите

      туда передается строка, и в нее прямо срёт стрим, а уж где она что хранит это её дело
      Ответить
    • > Как вообще стрим, читающий побайтово, буферизирует слово?

      Ну, вообще в стримах С++ есть встроеный буфер basic_streambuf, в котором как минимум 1 символ по стандарту буферизируется. А так да, оператор >> это просто функция istream& operator>>(istream&, string&), которая как хочет, так и вертит своими операндами
      Ответить
  • А зачем тут этот трюк? Я понимаю, побитовый сдвиг быстрее чем умножение и деление выполняется. Или там какие-то побитовые алгоритмы типа sha256. Тут битовый хак с отрицанием усложняет понимание арифметической формулы за ненадобностью.
    Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8