ՀՀ կրթության և գիտության նախարարություն Հայաստանի ազգային պոլիտեխնիկական համալսարան ՏՀՏԷ ինստիտուտ Կուրսային աշխատանք Թեմա՝ Բուտի բազմապատկման արագ ալգորիթմի հետազոտում Ամբիոն՝ ՏԱԾԱ Առարկա՝ ՀՀԾԱ և Ճ Խումբ՝ ՏՏ 955-2 Ուսանող՝ Արման Նալթակյան Դասախոս՝ Վարուժան Հակոբյան Երևան 2021 Բովանդակություն 1․Բուտի բազմապատկման արագ ալգորիթմ ...................................................................................... 3 2․Բուտի բազմապատկման ալգորիթմ ծրագրի մշակումը.................................................................... 5 Եզրակացություն ....................................................................................................................................... 6 Օգտագործված գրականություն ............................................................................................................. 7 2 1․Բուտի բազմապատկման արագ ալգորիթմ Բուտի ալգորիթմը բազմապատկման ալգորիթմ է, որը կատարում է երկուական 2 թվերի բազմապատկում, որոնցից մեկը ներկայացվում են 2-ի լրացման տեսքով: Ենթադրենք ունենք երկու 4 բիթանի երկուական թիվ։ Բուտի ալգորիթմը գործում է այսպես՝ Ռեգիստրում ավելացնում ենք 4 զրոներով լցված բիթեր։ Մյուս 4 բիթը պետք է լինի մեր բազմապատկելին և բացի դրանից ունենք մեկ լրացուցիչ բիթ, որը նույնպես պետք է լինի 0: Ամբողջ ալգորիթմի կատարման ժամանակ պետք է ուշադրություն դարձնենք վերջին 2 բիթերին (yi,yi-1): Այդ բիթերը կարող են լինել՝ իրար հավասար, նախավերջինը լինի 0, իսկ վերջինը 1 և նախավերջինը լինի 1, իսկ վերջինը 0։ Քննարկենք բոլոր տարբերակները՝ 1․Եթե վերջին 2 բիթը իրար հավասար են, ապա ուղղակի կատարում ենք 1 բիթով աջ տեղաշարժ, առանց ավելորդ գործողությունների։ Նշեմ նաև, որ եթե մեր առաջին բիթը 0-է, ապա տեղաշարժի ժամանակ առաջին բիթը փոխարինվում է 0-ով, իսկ եթե 1, ապա մեկով, նշանի ճշտության պահպանման համար։ 2․ Եթե նախավերջինը 0-է, իսկ վերջինը 1, ապա կատարվում է գումարման գործողություն։ Պետք է մեր առաջին 4 բիթին գումարենք մեր բազմապատկիչը, որը ներկայացված է 2-ի լրացման տեսքով։ Որից հետո կրկին կատարվում է աջ տեղաշարժ 1 բիթով։ 3․ Եթե նախավերջինը 1-է, իսկ վերջինը 0, ապա կատարվում է հանման գործողություն։ Պետք է մեր առաջին 4 բիթից հանենք մեր բազմապատկիչը, որը ներկայացված է 2-ի լրացման տեսքով։ Որից հետո կրկին կատարվում է աջ տեղաշարժ 1 բիթով։ Եթե գումարում ենք 4 բիթանի երկուական թվեր, ապա 4 հատ աջ տեղաշարժից հետո կստանանք բազմապատկման արդյունքը. այսինքն ալգորիթմի քայլերը հավասար են մեր երկուական թվի բիթի երկարությանը։ Մեր բազմապատկելին՝ A = (0100)2 = (4)10, իսկ բազմապատկիչը՝ B = (0111)2 = (7)10 : Միանգամից ներկայացնենք մեր բազմապատկիչը 2-ի լրացման տեսքով՝ -B = (1001)2 ։ 3 Կրկնություն Քայլեր Ռեգիստր Քայլերի նկարագրություն 0 0 0000 010(0 0) Ռեգիստրի հայտարարում 1 1 1.00 2 0000 0000 010(0 0) 001(0 0) Գործողություն չկա Աջ տեղաշարժ 2 2 1․00 2 0000 0000 001(0 0) 000(1 0) Գործողություն չկա Աջ տեղաշարժ 3 3 1․10 2 1001 1100 000(1 0) 100(0 1) Հանում Աջ տեղաշարժ 4 4 1․01 2 0011 0001 100(0 1) 110(0 0) Գումարում Աջ տեղաշարժ Այսպիսով մեր ստացած պատասխանի երկարությունը լինում է արտադրիչների կրկնապատիկ երկարությամբ, այսինքն 8 բիթ՝ (0001 1100)2 : Եթե ներկայացնենք 10ական համակարգում, ապա կստանանք՝ (0001 1100)2 = 16 + 8 + 4 = (28)10 : 4 2․Բուտի բազմապատկման ալգորիթմ ծրագրի մշակումը Ծրագիրը ներկայացնելուց առաջ ներկայացնեմ ալգորիթմը, ըստ որի այն աշխատում է։ Նկ․1 Բուտի բազմապատկման ալգորիթմի բլոկ սխեմա Այն աշխատում է վերոնշյալ բացատրված կարգով ստուգելով վերջին 2 բիթերի պարունակությունը և կատարելով համապատասխան գործողությունները։ Ծրագիրը գրված է Java ծրագրավորման լեզվով։ Այն հաշվում է երկու երկուական թվերի արտադրյալը, օգտագործելով Բուտի բազմապատկման ալգորիթմը։ 5 Նկ․2 Բուտի բազմապատկման ալգորիթմի ծրագրի արդյունքը կոնսոլի վրա Ծրագրի main-ում տրվում է բազմապատկիչն ու բազմապատկելին, ինչպես նաև նրանց բիտերի երկարությունները։ Ապա ծրագիրը աշխատացնելուց հետո բացվում է տվյալ պատուհանը, որտեղ տեսնում ենք քայլերը և վերջնական արդյունքը։ ։ Իսկ ամենաներքևում տեսնում ենք վերջնական արդյունքը։ Այս ծրագրով կարելի է որոշել կամայական երկուական թվերի արտադրյալը։ Եզրակացություն Բուտի ալգորիթմը առավելությունը կայանում է նրանուն , որ այն կարողանում է հաշվել ինչպես դրական, այնպես էլ բացասական երկուական թվերի արտադրյալը։ Մյուս առավելությունը կայանում է նրանում, որ համեմատած մյուս ալգորիթմների, ավելի քիչ քայլեր է իրականացնում արդյունքին հասնելու համար։ Ինչպես նաև արագություն է ձեռք բերում, որոշ դեպքերում, երբ անտեսում ենք 1-երը որոշակի բիթերում։ Ինչպես նաև առավել նպատակահարմար է օգտագործելը տվյալ ալգորիթմը 6 շատ բիթեր ունեցող երկուական թվերի համար , քանի որ համեմատաբար քիչ են մասնակի արտադրյալների բաժանումը ալգորիթմում։ Օգտագործված գրականություն 1. Таненбаум Э.Архитектура компьтера./Пер .с англ. 5-е изд.-СПб.:Питер, 2007.844с. 2. Цилькер Б.Я.,Орлов С.А Организация ЭВМ систем.-СПб.:Питер 2004.-668с. 3. Столлингс В.Структурная организация и архитектура компьтерных систем./Пер. с англ.,5-е изд.М.:Изд. дом Вильямс,2002.-896с. 7