comp102l5
DESCRIPTION
111TRANSCRIPT
1
Алгоритм ба програмчлал
Компьютерын арифметик
(Тооллын систем)
©Б.Алтанхүү, МУИС-ФЭС
2
Компьютерын хэл
• Компьютер нь:“асаалттай” (|‾|)“унтраалттай” (_)
гэсэн хоёр логик төлвийн аль нэгд оршдог.• Хүн эдгээр төлвийг тоогоор дүрсэлдэг:
“Асаалттай” = 1“Унтраалттай” = 0
• Тиймээс:..._|‾|_|‾|_|‾‾|_|‾|_...
гэсэн цахилгаан дохиог:...0101011010...
гэсэн тоон дарааллаар илэрхийлж болно.
3
Тооллын систем
• Хэдэн үндсэн цифрийг ашиглан дурын тоог илэрхийлэх аргачлал.
• 2-тын тооллын систем (BIN-Binary): {0-1}
• 10-тын тооллын систем (DEC): {0-9}
• Компьютер 2-тын тоолол.
• Хүн 10-тын тоолол.
• Хоёр өөр тооллын системд харилцан шилждэг байх шаардлага!
4
Тооллын системд ажиллах
• Суурь (base) – үндсэн цифрийн тоо.2-тын тоолол: p=210-тын тоолол: p=10
• Байрлал - тооны бичвэрт цифрийн эзлэх байр.
• Орон - байрлалын дугаар.• Бит - 2-тын тооны цифрийн орон.• Битүүд баруун гар талаас 0-ээс эхлэн
дугаарлагдана.• Ахлах бит - дараалсан хоёр битийн их
дугаартай нь.• Бага бит - дараалсан хоёр битийн бага
дугаартай нь.
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
6
Тооллын системд ажиллах:Эерэг бүхэл тоо - 2
• X гэсэн 10-тын тоог p суурьтай тооллын систем рүү хөрвүүлэхдээ дараах алгоритмыг баримтлана. Энэ алгоритмыг (from10a) гэе.1. X-ийг p-д хувааж, ноогдвор q, үлдэгдэл a-г олно.
2. Хэрэв 1-р алхмаар олдсон ноогдвор q≠0 байвал түүнийг X болгон аваад, харин үлдэгдэл a-г өмнө нь олсон үлдэгдлүүдийн зүүн талд нэмж бичнэ. 1-р алхамд шилжинэ.
3. Хэрэв 1-р алхмаар олдсон ноогдвор q=0 байвал алгоритм зогсоно. Харин олсон бүх үлдэгдлүүдийн дараалал бол анхны X тооны p суурьт систем дэхь эквивалент байна.
7
Тооллын системд ажиллах: Эерэг бүхэл тоо - 3
• 7510 гэсэн тоог 2-т руу хөрвүүлэх
• (to10a) томъёог хэрэглэхэд 7510 гарах ёстой.
• Санамж: 2-тын кодын зүүн талд 0 битийг нэмж бичлээ гээд 10-тын эквивалент өөрчлөгдөхгүй. Харин 1-ийг залгавал өөр тоо гарна.
8
Тооллын системд ажиллах:Эерэг бүхэл тоо - 4
• Том тоог дүрслэхэд бүр олон бит орно:
12810=100000002 (8 бит)
200610=111110101102 (11 бит) 6500010=11111101111010002 (16 бит)
10610=111101000010010000002 (20 бит)
• Иймээс бичиглэлийг хялбарчлах зорилгоор 16-тын тоолол (HEX-Hexadecimal) оруулж ирдэг.
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
10
Тооллын системд ажиллах: 16-тын тоолол (Hexadecimal) - 2
• 100101102 =1001 0110 болно. Хүснэгтээс, 1001=916, 0110=616. Тиймээс 1001 01102=9616 (8 орноос 2 орон).
• 111111000001011=0111111000001011=0111 1110 0000 1011 = 7E0B16
11
Тооллын системд ажиллах: 16-тын тоолол (Hexadecimal) - 3
• 16-тын тоог 2-т руу хөрвүүлэх: 16-тын цифрүүдийг ниблүүдээр сольж бичих.
• 16-тын тоог 10-т руу шилжүүлэх: (to10a) томъёо.• 10-тын тоог 16-т руу шилжүүлэх: (from10a) алгоритм.
Ж.нь 7510 16-т:
12
Тооллын системд ажиллах: Арифметик үйлдлүүд - 1
• Тоонуудыг хооронд нь баганаар нэмж, хасах, үржих, өнцөглөн хуваах нь 10-тын тооных шиг зарчмаар хийгдэнэ. Ж.нь: Хамгийн том цифр дээр 1-ийг нэмлээ гэхэд түүний
оронд хамгийн бага цифр бичигдэж, урд талын цифр 1-ээр нэмэгдэнэ
Хамгийн бага цифрээс 1-ийг хаслаа гэхэд түүний оронд хамгийн том цифр бичигдэж, урд талын цифрээс 1-ийг хасна
Тоог 0-д хувааж болохгүй
г.м.
13
Тооллын системд ажиллах: Арифметик үйлдлүүд - 2
14
Тооллын системд ажиллах: Арифметик үйлдлүүд - 3
• 16-тын хувьд арай төвөгтэй байж мэднэ. Хамгийн гол нь энд F16+116=1016 тэнцэтгэл биелэнэ гэдгийг санах хэрэгтэй.
15
Тооллын системд ажиллах: Сөрөг бүхэл тоо
• Сөрөг бүхэл тоог 2-т, 16-таар дүрслэе гэвэл модулийнх нь урд хасах тэмдэг тавьж болно:
-18510 => -101110012.
• Тэгээд (to10a) томъёо, (from10a) алгоритм, арифметик үйлдлүүдийг хийж болох юм.
• -510–210=-710 -1012–102=-(1012+102)=-1112
16
Тооллын системд ажиллах: Бодит тоо - 1
• X гэсэн эерэг бодит тоо ямар нэг системд:
xn-1xn-2...x1x0, x-1x-2...x-m
гэж дүрслэгдэнэ. Энд xi - цифр, n - бүхэл хэсгийн орны тоо, m - бутархай хэсгийн орны тоо (нарийвчлал):
1011,12
5E,A716
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
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-тын код юм.
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) гэж нэрийдье.
20
Анхаарал тавьсанд баярлалаа.