Загрузил Arman Naltakyan

Կուրսային ԱշխատանքԱ

реклама
ՀՀ կրթության և գիտության նախարարություն
Հայաստանի ազգային պոլիտեխնիկական համալսարան
ՏՀՏԷ ինստիտուտ
Կուրսային աշխատանք
Թեմա՝
Բուտի բազմապատկման արագ ալգորիթմի հետազոտում
Ամբիոն՝
ՏԱԾԱ
Առարկա՝
ՀՀԾԱ և Ճ
Խումբ՝
ՏՏ 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
Скачать