comp102l5

20
1 Алгоритм ба програмчлал Компьютерын арифметик (Тооллын систем) ©Б.Алтанхүү, МУИС-ФЭС

Upload: baaska214

Post on 30-Nov-2015

48 views

Category:

Documents


1 download

DESCRIPTION

111

TRANSCRIPT

Page 1: COMP102L5

1

Алгоритм ба програмчлал

Компьютерын арифметик

(Тооллын систем)

©Б.Алтанхүү, МУИС-ФЭС

Page 2: COMP102L5

2

Компьютерын хэл

• Компьютер нь:“асаалттай” (|‾|)“унтраалттай” (_)

гэсэн хоёр логик төлвийн аль нэгд оршдог.• Хүн эдгээр төлвийг тоогоор дүрсэлдэг:

“Асаалттай” = 1“Унтраалттай” = 0

• Тиймээс:..._|‾|_|‾|_|‾‾|_|‾|_...

гэсэн цахилгаан дохиог:...0101011010...

гэсэн тоон дарааллаар илэрхийлж болно.

Page 3: COMP102L5

3

Тооллын систем

• Хэдэн үндсэн цифрийг ашиглан дурын тоог илэрхийлэх аргачлал.

• 2-тын тооллын систем (BIN-Binary): {0-1}

• 10-тын тооллын систем (DEC): {0-9}

• Компьютер 2-тын тоолол.

• Хүн 10-тын тоолол.

• Хоёр өөр тооллын системд харилцан шилждэг байх шаардлага!

Page 4: COMP102L5

4

Тооллын системд ажиллах

• Суурь (base) – үндсэн цифрийн тоо.2-тын тоолол: p=210-тын тоолол: p=10

• Байрлал - тооны бичвэрт цифрийн эзлэх байр.

• Орон - байрлалын дугаар.• Бит - 2-тын тооны цифрийн орон.• Битүүд баруун гар талаас 0-ээс эхлэн

дугаарлагдана.• Ахлах бит - дараалсан хоёр битийн их

дугаартай нь.• Бага бит - дараалсан хоёр битийн бага

дугаартай нь.

Page 5: COMP102L5

5

Тооллын системд ажиллах:Эерэг бүхэл тоо - 1

• X гэсэн эерэг бүхэл тоо нь p суурьтай тооллын системд n ширхэг xi (i=0,n-1) цифрээс тогтоно гэвэл, ө.х.

xn-1xn-2...x1x0

байвал 10-т руу хөрвүүлэхдээ:

X(10)= xn-1*pn-1+xn-2*pn-2+...+x1*p1+x0*p0

(to10a)

• 110102=1*24+1*23+0*22+1*21+0*20=2610

Page 6: COMP102L5

6

Тооллын системд ажиллах:Эерэг бүхэл тоо - 2

• X гэсэн 10-тын тоог p суурьтай тооллын систем рүү хөрвүүлэхдээ дараах алгоритмыг баримтлана. Энэ алгоритмыг (from10a) гэе.1. X-ийг p-д хувааж, ноогдвор q, үлдэгдэл a-г олно.

2. Хэрэв 1-р алхмаар олдсон ноогдвор q≠0 байвал түүнийг X болгон аваад, харин үлдэгдэл a-г өмнө нь олсон үлдэгдлүүдийн зүүн талд нэмж бичнэ. 1-р алхамд шилжинэ.

3. Хэрэв 1-р алхмаар олдсон ноогдвор q=0 байвал алгоритм зогсоно. Харин олсон бүх үлдэгдлүүдийн дараалал бол анхны X тооны p суурьт систем дэхь эквивалент байна.

Page 7: COMP102L5

7

Тооллын системд ажиллах: Эерэг бүхэл тоо - 3

• 7510 гэсэн тоог 2-т руу хөрвүүлэх

• (to10a) томъёог хэрэглэхэд 7510 гарах ёстой.

• Санамж: 2-тын кодын зүүн талд 0 битийг нэмж бичлээ гээд 10-тын эквивалент өөрчлөгдөхгүй. Харин 1-ийг залгавал өөр тоо гарна.

Page 8: COMP102L5

8

Тооллын системд ажиллах:Эерэг бүхэл тоо - 4

• Том тоог дүрслэхэд бүр олон бит орно:

12810=100000002 (8 бит)

200610=111110101102 (11 бит) 6500010=11111101111010002 (16 бит)

10610=111101000010010000002 (20 бит)

• Иймээс бичиглэлийг хялбарчлах зорилгоор 16-тын тоолол (HEX-Hexadecimal) оруулж ирдэг.

Page 9: COMP102L5

9

Тооллын системд ажиллах: 16-тын тоолол (Hexadecimal) - 1

• Цифрийн олонлог нь {0-9, A-F}, p=16 байна.

• 16-тын нэг цифрт 2-тын 4 бит харгалзаж байна. Үүнийг нибл (nibble) гэнэ.

• Ниблүүдийн ачаар 2-тын код 4 дахин богиносно.

10-т (DEC)

2-т (BIN)

16-т (HEX)

0 0000 0

1 0001 1

2 0010 2

3 0011 3

4 0100 4

5 0101 5

6 0110 6

7 0111 7

8 1000 8

9 1001 9

10 1010 A

11 1011 B

12 1100 C

13 1101 D

14 1110 E

15 1111 F

Page 10: COMP102L5

10

Тооллын системд ажиллах: 16-тын тоолол (Hexadecimal) - 2

• 100101102 =1001 0110 болно. Хүснэгтээс, 1001=916, 0110=616. Тиймээс 1001 01102=9616 (8 орноос 2 орон).

• 111111000001011=0111111000001011=0111 1110 0000 1011 = 7E0B16

Page 11: COMP102L5

11

Тооллын системд ажиллах: 16-тын тоолол (Hexadecimal) - 3

• 16-тын тоог 2-т руу хөрвүүлэх: 16-тын цифрүүдийг ниблүүдээр сольж бичих.

• 16-тын тоог 10-т руу шилжүүлэх: (to10a) томъёо.• 10-тын тоог 16-т руу шилжүүлэх: (from10a) алгоритм.

Ж.нь 7510 16-т:

Page 12: COMP102L5

12

Тооллын системд ажиллах: Арифметик үйлдлүүд - 1

• Тоонуудыг хооронд нь баганаар нэмж, хасах, үржих, өнцөглөн хуваах нь 10-тын тооных шиг зарчмаар хийгдэнэ. Ж.нь: Хамгийн том цифр дээр 1-ийг нэмлээ гэхэд түүний

оронд хамгийн бага цифр бичигдэж, урд талын цифр 1-ээр нэмэгдэнэ

Хамгийн бага цифрээс 1-ийг хаслаа гэхэд түүний оронд хамгийн том цифр бичигдэж, урд талын цифрээс 1-ийг хасна

Тоог 0-д хувааж болохгүй

г.м.

Page 13: COMP102L5

13

Тооллын системд ажиллах: Арифметик үйлдлүүд - 2

Page 14: COMP102L5

14

Тооллын системд ажиллах: Арифметик үйлдлүүд - 3

• 16-тын хувьд арай төвөгтэй байж мэднэ. Хамгийн гол нь энд F16+116=1016 тэнцэтгэл биелэнэ гэдгийг санах хэрэгтэй.

Page 15: COMP102L5

15

Тооллын системд ажиллах: Сөрөг бүхэл тоо

• Сөрөг бүхэл тоог 2-т, 16-таар дүрслэе гэвэл модулийнх нь урд хасах тэмдэг тавьж болно:

-18510 => -101110012.

• Тэгээд (to10a) томъёо, (from10a) алгоритм, арифметик үйлдлүүдийг хийж болох юм.

• -510–210=-710 -1012–102=-(1012+102)=-1112

Page 16: COMP102L5

16

Тооллын системд ажиллах: Бодит тоо - 1

• X гэсэн эерэг бодит тоо ямар нэг системд:

xn-1xn-2...x1x0, x-1x-2...x-m

гэж дүрслэгдэнэ. Энд xi - цифр, n - бүхэл хэсгийн орны тоо, m - бутархай хэсгийн орны тоо (нарийвчлал):

1011,12

5E,A716

Page 17: COMP102L5

17

Тооллын системд ажиллах: Бодит тоо - 2

• Бодит тоог 10-т руу хөрвүүлэх:X(10)=xn-1*pn-1+xn-2*pn-2+...+x1*p1+x0*p0+

x-1*p-1+x-2*p-2+...+x-m*p-m (to10b)

• 1011,12=1*23+0*22+1*21+1*20+1*2-1= 8+2+1+0,5=11,510

• 5E,A716=5*161+E*160+A*16-1+7*16-2=

80+14+0,625+0,02734375=94,6523437510

Page 18: COMP102L5

18

Тооллын системд ажиллах: Бодит тоо - 3

• 10-тын системийн бодит тоог бусад систем шилжүүлэхдээ бүхэл ба бутархай хэсгийг тус тусад нь шилжүүлнэ.

• Бүхэл тоог шилжүүлэх:(from10a) алгоритм.• Бутарай хэсгийг шилжүүлэх:• 0,62510:

0/100 + 6/101 + 2/102 + 5/103 = 6 * 10-1 + 2 * 10-2 + 5 * 10-3 гэж 10 суурьтай бүхэл зэргүүдээр задлана.

• Нөгөө талаас 0,62510:0,5 + 0,125 = 1/2 + 1/8 = 1/21 + 1/23 = 1 * 2-1 + 1 * 2-3

буюу:0/20 + 1/21 + 0/22 + 1/23 = 0 * 20 + 1 * 2-1 + 0 * 2-2 + 1 * 2-3

Энд (to10b) томъёо бичигдсэн байгааг анзаарав уу.• Тиймээс үржвэрүүдийн эхний гишүүдийг түүж, 20-ийн өмнөх

цифрийг таслалын зүүн талд, бусдыг баруун талд бичихэд0,101

гэж гарна. Энэ бол 0,62510-ын 2-тын код юм.

Page 19: COMP102L5

19

Тооллын системд ажиллах: Бодит тоо - 4

• Дүгнэлт: Зөвхөн 1/2-ын бүхэл зэргүүдээр гүйцэд задарч чадах тийм бутархайнууд л төгсгөлөг 2-тын код үүсгэнэ.

• 3/4, 7/8 г.м. төгсгөлөг 2-тын код үүсгэнэ.• 1/3, 2/5 г.м. төгсгөлөг 2-тын код үүсгэхгүй (зөвхөн тодорхой

нарийвчлалтай)• 2/5 = 0,410 = 0,011001100112 (11 битийн нарийвчлалтай)• 10-тын бутархайг 16-тын систем руу шилжүүлнэ гэвэл тэр тоо мөн л

1/16-ын бүхэл зэргүүдээр гүйцэд задардаг байх ёстой. Үгүй бол тодорхой нарийвчлалтайгаар кодлоно.

• Ерөнхий тохиолдолд X гэсэн 10-тын бутархайг p суурьтай тооллын систем рүү хөрвүүлэхдээ дараах алгоритмыг баримталж болох юм. Энэ нь:

1. X-ийг p-ээр үржинэ.2. Хэрэв 1-р алхмаар олдсон үржвэрийн бутархай хэсэг нь 0 болоогүй эсвэл

заасан нарийвчлалд хүрээгүй бол энэ бутархайг X болгон аваад 1-р алхамд шилжинэ.

3. Хэрэв 1-р алхмаар олдсон үржвэрийн бутархай хэсэг нь 0 болсон эсвэл заасан нарийвчлалд хүрсэн бол алгоритм зогсоно. Харин энэ хүртэл олсон бүх үржвэрийн бүхэл хэсгүүдийн шууд дараалал бол анхны X бутархайн p суурьт систем дэхь эквивалент болно.

Энэ алгоритмыг (from10b) гэж нэрийдье.

Page 20: COMP102L5

20

Анхаарал тавьсанд баярлалаа.