1. C++ / Говнокод #19432

    −2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    int abs(int x)
    {
    	int a = x;
    	if(x >= 0) 
    	{
    		return a;
    	} 
    	else if(x < 0) 
    	{
    		a = a^2;
    		a = sqrt(a);
    		return a;
    	}
    }

    Поиск абсолютного значения числа.

    Запостил: DeScWD, 11 Февраля 2016

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

    • a XOR 2, ты в своём уме?

      Ну и говнохуитища типа
      int retard = sqrt(moron);
      Ответить
      • Тут же плюсы, наверняка кто-то перегрузил ^ в функцию возведение в степень. И сделал #define int someothershit
        Ответить
        • Ну да, так что это поди не 32-битное число, а нечто типа bignum.
          Ответить
    • а можно посмотреть код sqrt(a)?
      Ответить
      • return a ^ 0x80000002 + 1;

        P.S. Хуйню какую-то я написал, походу.
        Ответить
      • int sqrt(int a) {
            return (a ^ (-3)) + 1;
        }
        Ответить
        • щито это за магия?
          Ответить
          • http://ideone.com/DS1lX3
            Ответить
            • тьфу ты! ^ - это же ксор, а не степень

              a = a^2;
              a = sqrt(a);
              Ответить
              • А мне показалось, что в ссылке DS1lX3 — это DS1 or X3. Я уже хотел вычислять...
                Ответить
          • Грубо говоря, a ^ (-3) после a^2 эквивалентно а^(-1) или ~a. А по определению дополнительного кода, -a == ~a + 1. В итоге получаем из оригинального кода: if(a < 0) a = -a; Код на самом деле гениальный, а вы все просто не понимаете в обфускации
            Ответить
            • gcc вот так скомпилил, без единого ифа:
              my_abs:
                  movl    %edi, %edx
                  movl    %edi, %eax
                  sarl    $31, %edx
                  xorl    %edx, %eax
                  subl    %edx, %eax
                  ret
              Ответить
              • Шланг менее оригинален и условия таки вставляет даже на O3:
                my_abs(int):  
                        movl    %edi, %eax
                        negl    %eax
                        cmovll  %edi, %eax
                        retq
                Насколько я понял, там надеются, что пока выполняется neg, отработает предсказатель и всё заоптимизирует
                Ответить
                • Ну cmov - не условный переход, конвейер не ломает. Так что всё норм.
                  Ответить
                  • CMOV не работает на процессорах старее P6, так что кому-то ломает конвейер исключением 6.
                    Ответить
              • Что такое sarl?
                Ответить
                • Арифметический сдвиг. Биты выползшие за границу числа исчезают, появившиеся биты слева заполняются битом знака.
                  Ответить
                  • И как эта хуета работает?
                    Ответить
                    • Soul_re@ver в http://govnokod.ru/19432#comment312695 написал:
                      >> Арифметический сдвиг. Биты выползшие за границу числа исчезают, появившиеся биты слева заполняются битом знака.
                      Ответить
                      • Кеп, не надо повторять, лучше прояви наличие мозга.
                        Ответить
                    • Арифметический сдвиг 32-битового числа на 31 бит вправо заполняет всё число целиком знаковым битом. Т.е. любое положительное число превращается в 0x00000000, а отрицательное в 0xFFFFFFFF.

                      А дальше xor и sub для положительного ничего не делают (т.к. 0), а для отрицательного выглядят как (a ^ 0xFFFFFFFF) - 0xFFFFFFFF = ~a + 1 = -a
                      Ответить
              • Mr. B, извиняюсь за оффтоп, но скажите, что прочитать робкому шарпею, что бы разобраться в хитросплетениях плюсов? Страуструп сгодиться?
                Ответить
                • Почитать что-то, что отвлечет его от такой мысли.
                  Ответить
                  • Въебал плюс.
                    Ответить
                    • Но как же мне ЖРАТ?
                      Ответить
                      • Ты же шарпик знаешь, без еды не останешься.
                        Ответить
                        • конкурентов боитесь? Дяденька, да я не настоящий программист, я просто учебник Рихтера на свалке нашел...
                          Ответить
                          • Конкурентов... Да нет, просто спасаю тебя от крестоболи.
                            Ответить
                            • Раньше мальчики уходили на войну, что бы стать мужчинами.
                              Это моя война. моя великая битва
                              Освобождать память руками, юзать темплейты и сомнительные макросы, писать хедеры руками, почитать (в двух вариантах ударения) Страуструпа.
                              Ответить
                              • > Освобождать память руками
                                Да ну... Кто ж в крестах память руками освобождает? У нас даже в модуле, который работает почти на голом железе, смартпоинтеры и RAII во все поля юзаются :)
                                Ответить
                                • смартпоинтеры - это фича из 11 плюсов?
                                  Ответить
                                  • Смартпоинтеры - это фича из хуй пойми каких годов, когда их александреску в своей книге описал...

                                    Ты и сам можешь их реализовать даже на старых крестах.
                                    Ответить
                                    • Ну я то не в курсе, за меня все GC делал.

                                      Вот мне и надо такое, что бы я вчитался и познал

                                      Если я правильно понял в этот умный указатель заворачивается обьект и деструктор, котрый выполняется когда указатель выпадает из скоупа и все такое
                                      Ответить
                                      • Именно. RAII — краеугольный камень крестов. Без него получаются Си с классами.
                                        Ответить
                                      • Так умный указатель со счетчиком ссылок юзается?
                                        Ответить
                                        • > со счетчиком ссылок
                                          shared_ptr + weak_ptr - да.

                                          unique_ptr - нет. Он вообще не умеет копироваться, поэтому счётчик ему не нужен. И оверхеда совсем нету.
                                          Ответить
                              • Некорректное сравнение. Тебе дали туалетного утенка и ершик, а ты хочешь вилкой.
                                Ответить
                                • Чисти, чисти, сука. Вот как, блядь, нужно чистить, вот, быстро. Быстро. Раз-раз! Чисти, чисти, чисти-чис-чис-чиж-чж-чижь! Чисти! Говно! Чисти!
                                  Ответить
                                  • ХУЛИ ТЫ БЫДЛОКОД НАПИСАЛ, ПОШЕЛ ЧИСТИТЬ ГОВНО, ОПТИМИЗИРУЙ СУКА

                                    Что «чисти», ёпта, как я буду ассемблером-то чистить?! Чё, совсем мудак что ли, покажи мне, как я буду чистить-то, ёпта!
                                    Ответить
                                    • > как я буду ассемблером-то чистить?
                                      ; чисти, чисти сука
                                          cld
                                          mov al, 0
                                          mov ecx, size
                                          mov edi, buf
                                          rep stosb
                                      Ответить
                                • Чтоб "как мужики в армии, а не бабы какие-то".
                                  Ответить
                • плюсы говно, учи Си, Ассемблер.
                  Ответить
                  • Учи Си, Ассемблер.

                    Ассемблер - обращение?
                    Ответить
                    • Там еще в слове "учись" пробел и опечатка
                      Ответить
                • Проспись и на работу контроллеры писать.
                  Ответить
                  • Как в американской школе на доске мелом 10000 раз?
                    Ответить
                    • 16 раз не так уж и много.
                      Ответить
                      • почему 16? потому что 16 это 2^(2^2)?
                        Ответить
                        • binary10000=dec16
                          Ответить
                        • Ей было 1100 лет,
                          Она в 101 класс ходила,
                          В портфеле по 100 книг носила.
                          Всё это правда, а не бред.

                          Она ловила каждый звук
                          Своими 10 ушами,
                          И 10 загорелых рук
                          Портфель и поводок держали.

                          Когда, пыля 10 ног,
                          Она шагала по дороге,
                          За ней всегда бежал щенок
                          С 1 хвостом, зато 100-ногий.

                          И 10 тёмно-синих глаз
                          Рассматривали мир привычно …
                          Но станет всё совсем обычным,
                          Когда поймешь ты мой рассказ.
                          Ответить
                          • В к подьезде, в квартире ва
                            Куртизанка жила одна
                            На в курсе учила херь
                            про свою вС бугалтерь 
                            
                            у нее было а хвостов
                            у нее было са зубов
                            С парней, вс где то лет
                            С е яиц делала омлет
                            
                            И за ееее рублей
                            О мужчин кувыркались с ней
                            Не поймешь этой хуеты
                            Коль михипа не знаешь ты
                            Ответить
        • >байты, такты процессора - вот где мыслЯ, блеать, вот где красота и свежесть!
          Ответить
          • Все правильно говорит Царь, только красота эта непрактична. Собственно, красоту можно найти и в потрескавшейся краске на стенах.
            Ответить
            • Не, это про золотца паста
              Представь ситуацию. Господа в смокингах и цилиндрах сидят в обедне и пьют чай, обсуждая инкапсуляцию, полиморфизм, шаблоны наконец. Тут к ним вползает пьяный вдрызг кучер Ванька. Отплевывая лошадиный навоз, он ссыт под себя, одновременно блюя на пол несвежим портвешком. Затем достает задроченный томик K&R, найденный на помойке. "байты, такты процессора - вот где мыслЯ, блеать, вот где красота и свежесть!". Смеясь, господа растегивают ширинки и мочатся быдлу в рот. Зовут дворника Никиту - местного лисп-задрота, он спускает байтопетуха с лестницы. Он делает это с удовольствием - хоть зачем-то сгодился элите. Поднимаясь за похвалой, он начинает зациклено бормотать про жидов. Господа для острастки ссут на него, после чего возвращаются к своим светским беседам.
              Ответить
              • Что за золотце и откуда эта паста? Где-то ее уже видел.
                Ответить
                • Один лиспер-долбоеб-байтоеб
                  http://www.govnokod.ru/19117#comment308002
                  http://vk.com/funcall
                  http://pastebin.com/EfGqwsD2
                  Ответить
                  • Лиспер-байтоёб...
                    Ответить
                  • На пейсте его реальное резюме? Ну нельзя же так, работодатели не оценят.
                    Ответить
                    • Ну он его в своих тредах на АИБ вбрасывал http://www.nowere.net/b/arch/94881

                      Можно конечно допустить, что то не его треды, а кого-то другого, но я в этом сильно сомневаюсь
                      Ответить
                • А паста с борд. С ныне покойного нульчевого /c/ скорее всего
                  Ответить
              • А кто тогда ванька?
                Ответить
            • https://paste.debian.net/plain/380081 вот вам еще пасты несвежей, про лисп
              Ответить
        • return a ^ (1 / 2);
          Ответить
    • Чо, я так на калькуляторе делал, ну только с возведением в степень вместо ксора.
      Ответить
    • Первый иф - это типа оптимизация?
      Ответить
    • А так нельзя?
      for (int8_t i = -10; i <= 10; ++i)
      	    printf("%d %d\n", i, i|(int8_t)(1<<8));
      Ответить
    • Кстати, с днем святого Валентина, мужики!
      Ответить

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