Logo hy.boatexistence.com

Կարո՞ղ եք բիթային բազմապատկում անել:

Բովանդակություն:

Կարո՞ղ եք բիթային բազմապատկում անել:
Կարո՞ղ եք բիթային բազմապատկում անել:

Video: Կարո՞ղ եք բիթային բազմապատկում անել:

Video: Կարո՞ղ եք բիթային բազմապատկում անել:
Video: Delphi Программирование / Android NDK, SDK, Java Machine, JDK, Nox Player, AVD Android Эмулятор 2024, Մայիս
Anonim

Մի թիվը կարելի է բազմապատկել 2-ով՝ օգտագործելովբիթային օպերատորներ: Դա արվում է ձախ հերթափոխի օպերատորի օգտագործմամբ և 1-ով մնացած բիթերը տեղափոխելով: Սա հանգեցնում է նախորդ թվի կրկնակի: Ծրագիրը, որը ցույց է տալիս թվի բազմապատկումը 2-ով, օգտագործելով բիթային օպերատորները, տրված է հետևյալ կերպ:

Ինչպե՞ս եք բազմապատկում Bitwise-ի հետ:

2-ի ցանկացած արժեքով N-ի հզորությանը բազմապատկելու համար (այսինքն 2^N) տեղափոխեք N բիթերը ձախԲիթերը բաժանելու համար տեղափոխեք աջ: Բիթերը ամբողջ 1-ը կամ 0-ն են. դուք չեք կարող տեղաշարժվել բիթերի մի մասով, հետևաբար, եթե ձեր կողմից բազմապատկվող թիվը չի գործոնավորում N-ի ամբողջ արժեքը, այսինքն.

Արդյո՞ք Bitwise բազմապատկումն ավելի արագ է:

Bit-shifting-ը դեռ ավելի արագ է, բայց երկու mul/div-ի ոչ հզորության դեպքում, երբ կատարեք ձեր բոլոր հերթափոխերը և ավելացնեք արդյունքները, այն կրկին ավելի դանդաղ է:

Ո՞րն է ավելի արագ բազմապատկումը կամ բաժանումը:

Բազմապատկումը ավելի արագ է, քան բաժանումը: Համալսարանում ինձ սովորեցրին, որ բաժանումը վեց անգամ ավելի է, քան բազմապատկելը: Իրական ժամկետները կախված են ճարտարապետությունից, բայց ընդհանուր առմամբ բազմապատկումը երբեք չի լինի ավելի դանդաղ կամ նույնիսկ այնքան դանդաղ, որքան բաժանումը:

Արդյո՞ք Bitshifting-ն ավելի արագ է, քան բազմապատկումը:

Բիթերի տեղափոխումը ձախ և աջ, ըստ երևույթին, ավելի արագ է, քան բազմապատկման և բաժանման գործողությունները շատ, գուցե նույնիսկ բոլոր պրոցեսորների վրա, եթե դուք օգտագործում եք 2 հզորություն: Այնուամենայնիվ, դա կարող է նվազեցնել կոդի հստակությունը որոշ ընթերցողների և որոշ ալգորիթմների համար:

Խորհուրդ ենք տալիս: