1. Си / Говнокод #25796

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    n = ((n >>  1) & 0x55555555) | ((n <<  1) & 0xaaaaaaaa);
       n = ((n >>  2) & 0x33333333) | ((n <<  2) & 0xcccccccc);
       n = ((n >>  4) & 0x0f0f0f0f) | ((n <<  4) & 0xf0f0f0f0);
       n = ((n >>  8) & 0x00ff00ff) | ((n <<  8) & 0xff00ff00);
       n = ((n >> 16) & 0x0000ffff) | ((n << 16) & 0xffff0000);
    
                    -- C code which reverses the bits in a word.

    Запостил: neTyx_npoTKHyTbIu, 03 Сентября 2019

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

    • ахуенно
      Ответить
    • Да, времена и нравы стали тише... -
      Но вновь Вуглускр печатает в Сети:
      "Меня интерисуют только мыши
      их стоимость, и где преобрести"
      Ответить
    • Numerical recipes, xynta.
      Ответить
    • Кстати, Числов умер недавно.

      Теперь по теме: 0x5 = 0b0101; 0xa = 0b1010; 0x3 = 0b0011; 0xc = 0b1100. Пронумеруем биты 16-битного числа: рпонмлкизжедгвба.
      (n >> 1) & 0x55555555 == 0b0р0о0м0к0з0е0г0б.
      (n << 1) & 0xaaaaaaaa == 0bп0н0л0и0ж0д0в0а0.
      После первого шага n = 0bпрнолмикжздевгаб.
      Заметим, что пары смежных битов поместались менями.

      Второй шаг:
      (n >> 2) & 0x33333333 == 0b00пр00лм00жз00вг.
      (n << 2) & 0xcccccccc == 0bно00ик00де00аб00.
      После второго шага n = 0bноприклмдежзабвг.
      Заметим, что у нас возникли упорядоченные цепочки длиной 4 бита.

      Третий шаг:
      (n >> 4) & 0x0f0f0f0f == 0b0000нопр0000дежз.
      (n << 4) & 0xf0f0f0f0 == 0bиклм0000абвг0000.
      После третьего шага n = 0bиклмнопрабвгдежз.
      Осталось поместать менями две половинки.

      Четвёртый шаг:
      (n >> 8) & 0x00ff00ff = 0b00000000иклмнопр.
      (n << 8) & 0xff00ff00 = 0bабвгдежз00000000.
      После четвёртого шага n = 0bабвгдежзиклмнопр.

      Похоже, что автор имел в виду всё-таки двойное слово, а не слово. Повторить всю цепочку действий для двойного слова предлагаю читателю в качестве домашнего задания.
      Ответить
      • Вообще-то "слово" не является машинным словом только в говномире "x86" и "windows".

        Кстати, переведи на "PHP" с учётом разрядности системы. Я сегодня ночью пытался, но я анскильный и уснул, теперь у меня не все клавешы роботают (ну, ещё меньше чем до этого).
        Ответить
        • Именно поэтому я за «х86».
          Ответить
        • когда-то являлась

          но теперт уже нет
          тяжелое наслежние 16тибитных
          Ответить
        • Порядок был просран, когда переходили с eax на rax.
          Ответить
          • Ещё раньше: когда переходили с ax на eax.
            eax –— это двойное слово (DWORD), а rax –— четверное (QWORD).
            Ответить
            • Самое лулзовое, что эти соспатры зачем-то отлили в копролите эти знания в Win32Api

              у них там реально есть типы DWORD
              в си
              нахуя??
              Ответить
            • Хорошо что до обратной программной совместимости не додумались во время перехода с 8-ми на 16 бит...
              Ответить
              • по шастью, писи начались с 16 бит (8 битная там была только шына данных)

                впрочем, тогда бы у нас байт и ворд были бы взаимозомомомзмоемыми
                было бы не так уж и плплплпохо
                Ответить
                • >> писи начались с 16 бит
                  >>
                  Чего несёт...
                  Ответить
                  • несу тебе говна на лопате
                    открой рот, закрой глаза

                    IBM PC 5150 имел процессор с регистром 16 бит, работавший в реальном режиме
                    Ответить
                    • 8080, долбоеб.
                      Ответить
                      • что 8080?
                        Ответить
                      • Тот гость имеет ввиду именно "IBM PC", а не просто персональный компьютер. 8080 из "PC" стоял только на Альтаире.
                        Ответить
                        • Да это долбоёб какой-то, у которого до "DOS" и "8086" были только абаки и палки-считалки.
                          Ответить
                          • Ты конечно очень мощно обосрался, показав нам всем, что ты не знаешь, что такое "IBM PC".

                            Ты что, информатику в школе не изучал?
                            Ответить
                            • Поссал тебе в рыло.

                              Я с этим долбоебом уже спорил про какую-то сетевую хуиту, щас он упрется рогами и будет пытаться выкрутиться.
                              Ответить
                              • Как вы друг друга различаете?
                                Ответить
                                • Очень просто
                                  Он тупой, а я нет
                                  Ответить
                                • Характерно тупит. Вот, это он же:
                                  https://govnokod.xyz/_25694/#comment-468721
                                  Сучий гугель почемуто .ру еще не сканировал, wtf
                                  Ответить
                                  • > Сучий гугель почемуто .ру еще не сканировал, wtf
                                    После вореций «Гугл» практически перестал индексировать ГК, увы.
                                    Ответить
                              • Продолжай нести хуйню, дурачок
                                Продолжай обсыраца дальше
                                Нам это нравится
                                Ответить
                • > 8 битная там была только шына данных
                  на 8086 была 16, 8 было на 8088.
                  Ответить
                  • да

                    а теперь позырь какой проц стоял в первом писи
                    Ответить
                    • Первое использование термина «персональный компьютер» относилось к компьютеру Programma 101 (англ.)русск. (1964) итальянской фирмы Olivetti
                      Ответить
                      • Однако, когда я говорю PC, все почему-то понимают, что я говорю про IBM PC compatible.

                        Не про Commodore, не про BBC Micro, не про Amiga, не про Эппл Лиза, а про IBM PC
                        Ответить
                        • Не все "PC" от "IBM", второй гость тебя не понимает, тебе следует уточнять.
                          Ответить
                          • То-есть когда я говорю "первая пекашка 5150 была на 16 битном проце" то тебе НЕ очевидно, о чем я говорю?

                            правда?
                            Ответить
                            • Но это не первая "пекашка"!
                              Ответить
                              • Разумеется
                                А так же это не первый компьютер

                                Но мы говорим про IBM PC
                                Ответить
                                • Это ты говоришь, эта подветка началась с моего шутливого комента про переход с 8-ми на 16 бит. IBM PC не первый и не единственный в мире компьютер.

                                  http://govnokod.ru/25796#comment499122
                                  Ответить
                                  • Фирма IBM включила аббревиатуру «персональный компьютер» (англ. PC) в название своего изделия и, с распространением ЭВМ, имеющих архитектуру IBM PC в начале 1980-х годов, персональным компьютером стали называть любую ЭВМ, имеющую архитектуру IBM PC. (с) вики
                                    Ответить
                                    • > стали называть любую ЭВМ, имеющую архитектуру IBM PC

                                      Еще раз: любой IBM PC является персональным компьютером, но не все персональные компютеры имеют архитектуру IBM PC. IBM PC является подмножеством множества персональных компьютеров.

                                      Заебал.
                                      Ответить
                                      • Еще раз:

                                        "персональным компьютером стали называть любую ЭВМ, имеющую архитектуру IBM PC"

                                        Понимаешь ли ты смысл этой фразы?

                                        Она означает, что когда-то (давно-давно) действительно словом "персональный компутер" называли любой домашний комп

                                        Но с 80-х годов словом "персональный комптуре" называют только совместимые с IBM PC

                                        Так вот случилось ввиду его популярности

                                        От себя добавлю, что до 2006 года можно было услышать: "у тебя мак или писи?" и даже после перехода яблока на x86 все равно можно услышать "у меня не мак а pc"

                                        https://www.crucial.com/usa/en/mac-vs-pc-the-pros-and-cons


                                        Потому когда люди говорят "писи" они с вероятностью 99% имеют ввиду IBM PC компатибл

                                        Машину, с процессором x86
                                        Ответить
                                        • Еще раз
                                          >> эта подветка началась с моего шутливого комента про переход с 8-ми на 16 бит.
                                          При чем тут 80-е?
                                          Ответить
                                          • С того, что мы живем после 80-х

                                            Понимаешь?

                                            80-е уже прошли
                                            И вот после 80-х под словом "PC" подразумеваетя IBM PC

                                            И я кстати думаю , что Сема это отлично знал

                                            Он просто думал (если это слово можно применить к Семе) что в первом PC стоял 8ми битный процессор

                                            Я делаю этот вывод из того, что он зачем-то упомянул 8080, которого в IBM PC отродясь не было
                                            Ответить
              • Были и четырёхбитные процессоры. Они в основном использовались в микрокалькуляторах и в бытовой технике.

                В микрокалькуляторах, правда, 4-битное «слово» означало не число, а всего лишь одну цифру числа (там зачастую была BCD — двоично-десятичная кодировка; использовалось 10 значений из 16 возможных, остальные были зарезервированы).
                Ответить
                • Икарус
                  ну я для кого написал про писи?

                  разумеется, были всякие процессоры
                  И четырехбитные (с них начался интел)
                  и восьмибитные (z80 тот же)

                  но IBM PC имел 16-ти битный процессор
                  шина данных у него была 8 бит
                  шина адреса такая, что влазил мегабайт (скок это? 20?)
                  а регистр был 16 бит
                  Ответить
                  • Ты под себя подливой ёбнул.
                    Ответить
                    • ты просто обосралcя и стестняешься поменять штанишки

                      так и сидишь обоссаный
                      Ответить
                • Удивил, где-то тут обсуждали однобитный процессор...
                  Ответить
                  • Может адресовать 2 бита в памяти и выполнить с ними 2 действия?
                    Ответить
                    • У него шина инструкций 4-битная, а данные подаются на одну ножку. Он может выполнить 16 действий с одним битом, поданным на вход, и с результатом предыдущего действия. Память адресовать он не может.
                      Ответить
                      • т-есть у него стат память на 1 бит?
                        Ответить
                        • Ага.
                          Ответить
                          • Тоже мне процессор

                            Что вообще можно назвать процессором?

                            Если я из кучки транзисторов соберу девайс, который защелкивает бит, и ксорит с ним следующий, то это будет процессор?
                            Ответить
                            • Вот и мне показалось, что то, что производитель назвал «однобитным процессором», в реальности нифига не процессор.

                              Кстати, у него есть инструкции для «условных переходов». Для этого имеются выходы «перемотка ленты вперёд» и «перемотка ленты назад». Внешнее устройство, которое кормит процессор инструкциями, должно просматривать сигналы перемотки.
                              Ответить
                              • Процессоры 1-го поколения компьютеров вообще не имели хранимой программы и программировались соединением соответствующих блоков в нужном порядке.
                                Ответить
                  • Однобитный вообще оказался несамостоятельным. Он даже не может вытягивать инструкции из памяти, его нужно кормить командами с руки.
                    Ответить
          • когда переходили с ax на eax
            Ответить
            • Нет, тогда int нормально расширили до мышинного слова.
              Ответить
              • какой инт? в чем? причем тут воше инт?

                термин WORD всегда означает 2 байта

                во времен 16тибных ЦПУ это был размер регистра (а чуть позже стало шириной шины)
                в 32х битном режиме это уже было не так, а слово осталос


                теперь регистр у нас 64 бите
                шина данных вроде тоже

                а слово приелось
                Ответить
                • Когда с a перешли на ax, то пришлось придумывать как называть новый тип, долбоёб.
                  Ответить
                  • какого a?
                    что ты несешь?
                    ты серьезно думаешь, что был регистр "a"?!
                    Ответить
                    • Удивишься, регистр-аккумулятор на многих архитектурах часто называли "A". AX он стал называтся на 8086.
                      Ответить
                      • А если загуглить, что значит "X", то прямо откровение будет и фонтан какавы.
                        Ответить
                        • Я помню. «Х» означает «хвастун». Или тут другая загадка?
                          Ответить
                        • Захлебнись же наконец в своем говне. Ублюдок.
                          Ответить
                      • Почитай пожалуйста тредик целиком

                        И ты увидишь, что это тредик про термин WORD в x86.
                        Ты так же увидишь, что еблан несет какую-то ворецию про int (причем тут int?) про "переход с a на ax" (в x86?!!!) итд итп
                        Ответить
      • >Числов умер
        :((((((((((((((((

        милости прошу, к нашему шалашу(((
        Ответить
    • https://en.wikipedia.org/wiki/Hamming_weight
      Ответить

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