Մի թիվը կարելի է բազմապատկել 2-ով՝ օգտագործելովբիթային օպերատորներ: Դա արվում է ձախ հերթափոխի օպերատորի օգտագործմամբ և 1-ով մնացած բիթերը տեղափոխելով: Սա հանգեցնում է նախորդ թվի կրկնակի: Ծրագիրը, որը ցույց է տալիս թվի բազմապատկումը 2-ով, օգտագործելով բիթային օպերատորները, տրված է հետևյալ կերպ:
Ինչպե՞ս եք բազմապատկում Bitwise-ի հետ:
2-ի ցանկացած արժեքով N-ի հզորությանը բազմապատկելու համար (այսինքն 2^N) տեղափոխեք N բիթերը ձախԲիթերը բաժանելու համար տեղափոխեք աջ: Բիթերը ամբողջ 1-ը կամ 0-ն են. դուք չեք կարող տեղաշարժվել բիթերի մի մասով, հետևաբար, եթե ձեր կողմից բազմապատկվող թիվը չի գործոնավորում N-ի ամբողջ արժեքը, այսինքն.
Արդյո՞ք Bitwise բազմապատկումն ավելի արագ է:
Bit-shifting-ը դեռ ավելի արագ է, բայց երկու mul/div-ի ոչ հզորության դեպքում, երբ կատարեք ձեր բոլոր հերթափոխերը և ավելացնեք արդյունքները, այն կրկին ավելի դանդաղ է:
Ո՞րն է ավելի արագ բազմապատկումը կամ բաժանումը:
Բազմապատկումը ավելի արագ է, քան բաժանումը: Համալսարանում ինձ սովորեցրին, որ բաժանումը վեց անգամ ավելի է, քան բազմապատկելը: Իրական ժամկետները կախված են ճարտարապետությունից, բայց ընդհանուր առմամբ բազմապատկումը երբեք չի լինի ավելի դանդաղ կամ նույնիսկ այնքան դանդաղ, որքան բաժանումը:
Արդյո՞ք Bitshifting-ն ավելի արագ է, քան բազմապատկումը:
Բիթերի տեղափոխումը ձախ և աջ, ըստ երևույթին, ավելի արագ է, քան բազմապատկման և բաժանման գործողությունները շատ, գուցե նույնիսկ բոլոր պրոցեսորների վրա, եթե դուք օգտագործում եք 2 հզորություն: Այնուամենայնիվ, դա կարող է նվազեցնել կոդի հստակությունը որոշ ընթերցողների և որոշ ալգորիթմների համար: