მთავარი  |    ფორუმი  |    FAQ  |    წესები  |    რეკლამა ჩვენთან  |    კონტაქტი  |    რუქა






ადგილმდებარეობა  მთავარი » სტატიები » პროგრამირება
მაგიური 0 და 1

შესავლისმაგვარი

    ადამიანი აზროვნებს თვლის ათობით სისტემაში ანუ მას უადვილდება ოპერაციების ჩატარება ისეთ რიცხვებზე რომლებიც წარმოიდგინებიან მხოლოდ 10 ციფრისაგან, 0-დან 9-მდე. რატომ ? რა ვიცი, ალბათ იმიტომ რომ ხელებზე ათი თითი გვაქვს და აღქმაც აქედან დაიწყო.
    ათობითი რიცხვებია მაგ:

500, 10, 1, 59, 627.

თვლის სისტემები შეიძლება იყოს უამრავი. რაც შეეხება ციფრულ ტექნიკას და მათ შორის კომპიუტერებსაც ისინი “აზროვნებენ” თვლის ორობით სისტემაში ანუ მათში შეიძლება წარმოვადგინოთ მხოლოდ ორი ციფრი: 0 და 1, და რიცხვები რომლებიც შესდგებიან მხოლოდ ამ ორი ციფრისგან, რატომ ? ალბათ იმიტომ რომ მათ ათი თითი არა აქვთ.
    ორობითი რიცხვებია მაგ:

0110, 101, 110101, 00001, 10.

    თუ რას წარმოადგენს თითოეული ეს ჩანაწერი ამას შემდეგში დაწვრილებით განვიხილავთ. ხშირად ამ ციფრებს ასეც უწოდებენ “ლოგიკური 0” და “ლოგიკური 1”. სინამვილეში ისინი შეესაბამებიან ძაბვის ორ განსხვავებულ მნიშვნელობას: დაბალი (ლოგიკური 0) და მაღალი (ლოგიკური 1). ამ საკითხის ზუსტი განხილვა სცილდება ჩვენი თემის ფარგლებს. შემდგომში ვიხმართ ტერმინებს, უბრალოდ “ნული” და “ერთი”; პროგრამირების თვალსაზრისით არ არის საჭირო შევეხოთ მათ ფიზიკურ მდგომარეობებს.

    ცნობილია, რომ შეიქმნა 3 მდგომარეობიანი კომპიუტერებიც მაგრამ მათ განვითარება ვერ ჰპოვეს რადგან ბევრი დადებითის გარდა გააჩნდათ უარყოფითი მხარეებიც გამოთვლების სისწრაფესთან დაკავშირებით.

    თვლის სისტემების შესწავლა აუცილებელია იმისათვის რომ ხშირად პროგრამირებაში საჭირო ხდება ე.წ. რვაობითი და თექვსმეტობით რიცხვებთან მუშაობა. ისინი ძირითადად შემოღებულია ზემოთ მოყვანილი ორობითი რიცხვების მარტივად წარმოდგენის მიზნით.

    შევისწალოთ თვლის ორობითი, რვაობითი და თექვსმეტობითი სისტემები თანმიმდევრობით. პირველად განვიხილავთ ჩვენს მშობლიურ თვლის 10-ობითი სისტემას და შემოვიტანთ ზოგიერთი საჭირო განმარტებას.

    უშუალო დიალოგისგან განსხვავებით კომპიუტერული დოკუმენტაციის კითხვისას გამოწვეული, შესაძლო ვირტუალური, მორალურ-იურიდიული ექსცესების თავიდან აცილების მიზნით წინასწარ შევთანხმდეთ რომ :

    1) გამოთვლებისას რიცხვებს სასურველია ყოველთვის მივუწეროთ ინდექსი რომლითაც მივუთითებთ თუ რა სისტემაშია იგი წარმოდგენილი, წინააღმდეგ შემთხვევაში შეიძლება გამოთვლები ჩავატაროთ შეცდომით. მაგ. გაუგებარია რიცხვი 101 რა სისტემაშია წარმოდგენილი 2-ობითში, 10-ობითში, 8-ობითში თუ 16-ობითში, რადგან, როგორც შემდეგ ვნახავთ ეს ციფრები (1 და 0) გვაქვს 2-ობითშიც, 8-ობითშიც და 16-ობითშიც. ამიტომ, თუ ის 8-ობითშია უკეთესია მივუწეროთ ინდექსი ე.ი. 1018. ან მაგალითად, რიცხვი 305, აშკარაა რომ იგი არ არის 2-ობით სისტემაში, მაგრამ დანარჩენ სისტემებზე ამას ვერ ვიტყვით.
    მაგალითად,

11012 - არის ორობითში.
100110 - არის ათობითში.
და ა. შ.

    2) 2-ობითი, 8-ობითი და 16-ობითი რიცხვები არ იკითხება ისე, როგორც 10-ობითი, არამედ ცოტათი უნდა შევურაცმყოთ თავი და უნდა წავიკითხოთ მხოლოდ ციფრებად. მაგ. 01102- “ნული, ერთი, ერთი, ნული” და არა “ასათი”. ასევე 27318- “ორი, შვიდი, სამი, ერთი” და არა “ორიათას შვიდას ოცდათერთმეტი”.

თვლის ათობითი სისტემა

    როგორც უკვე აღვნიშნეთ კომპიუტერი “აზროვნებს” ლოგიკური 1-ების და 0-ების მეშვეობით. მაგრამ საინტერესოა, როგორ მიიღება მათი საშუალებით რეალური რიცხვები ან ყველა ის პროცესი რასაც ადგილი აქვს მონიტორზე კომპიუტერული პროგრამის მუშაობის დროს.

    არსებობს შემდეგი შესაბამისობა ორობით და ათობით რიცხვებს შორის:

ორობით ათობით
000 0
001 1
010 2
011 3
100 4
101 5
110 6
... ...

    რა კანონზომიერებით მიიღება ასეთი შესაბამისობა? არსებობს გარდაქმის წესები რომელიც საშუალებას იძლევა გადავიდეთ თვლის ერთი სისტემიდან მეორეში ანუ მაგ: ათობითი 5-დან მივიღოთ ორობითი 101 ან პირიქით.

    ამისათვის ჯერ უნდა ვნახოთ თუ რას წარმოადგენს ჩვენთვის კარგად ცნობილი თვლის ათობითი სისტემა.

    რიცხვს რომელიც ტოლია თვლის მოცემულ სისტემაში ერთმანეთისგან განსხვავებულ ციფრთა რაოდენობისა უწოდებენ ამ სისტემის ფუძეს. მაგ: 10-ობით სისტემაში გვაქვს 10 განსხვავებული ციფრი (0, 1, 2. . . 9), ე.ი. ამ სისტემის ფუძეა 10, ასევე ორობით სისტემაში გვაქვს ორი ციფრი (0 და 1) ე.ი. ამ სისტემის ფუძეა 2.

    ახლა, ვნახო თუ როგორ შეიძლება წარმოვადგინოთ ნებისმიერი 10-ობითი რიცხვი სხვა სახით, მაგ. რიცხვი 473 შეგვიძლია დავშალოთ შემდეგ შესაკრებებად:

47310 = (4 * 102) + (7 * 101) + (3 * 100)      (1)

    არსებობს ე.წ. პოზიციის ცნება, ლაპარაკია რიცხვში ციფრის პოზიციაზე. მაგ. 473-ში 4-ს პოზიციაა 2, 7-ისა 1, ხოლო 3-ისა 0. ე.ი პოზიციის თვლა იწყება 0-დან და არა 1-დან. (1) ტოლობაში ფუძის (10-ის) ხარისხები ამიტომაც შეესაბამებიან სამრავლის პოზიციებს. არსებობს ასევე წონის ცნებაც. მოცემული ციფრის წონა არის ამ სისტემის ფუძე ხარისხად ამ ციფრის პოზიციისა ანუ (1)-ში 4-ის წონაა 102, ხოლო 3-ის წონაა 100.
    და კიდევ ერთი სრულიად ლოგიკური კითხვა:

    როგორ წარმოვადგინოთ 10-ობითი წილადი რიცხვები (1) ტოლობის მსგავსად? ამ შემთხვევაში მძიმის შემდგომი ციფრის წონა იწყება 10-1-დან, მერე მოსდევს 10-2 და ა.შ. მაგ. რიცხვი 21,457-თვის გვექნება:

21,45710 = (2*101) + (1*100) + (4*10-1) + (5*10-2) + (7*10-3)      (2)

    იმედია ყველაფერი გასაგებია, წინააღმდეგ შემთხვევაში, უკეთესი იქნება თუკი შეასრულებთ შემდეგ ორ პუნქტს პროგრამისტების რჩევებიდან:

1. თუ გაუგებარია მაშინ გადაიკითხე კიდევ ერთხელ;
2. თუ მაინც გაუგებარია მაშინ გადადი პირველ პუნქტზე.

    აი, ამჯერად სულ ეს იყო. დანარჩენი მერე . . .

რეზიუმე

Image at : www.g3b.ge
ავტორი: გიორგი ბაწაშვილი (G3B)

  
ინფორმაცია


თემატური სტატიები




სტატიის შეფასება
ეს გვერდი უკვე შეაფასეს!

შეფასება: 8
შეფასება: 2.3



გამოხმაურება

საწყისი რომელია?
24-01-2011, 18:05:14 | gio nonisha

კარგი სტატიაა, მაგრამ დებილებისთვისაა დაწერილი (ძალიან დაწვრილებით), მე ესენი დიდი ხანია ვიცი, თანდათანობითი დაყოფის წესიც ვიცი, უბრალოდ დამაინტერესა, როგორ იყო დაწერილი ყველაფერი
15-07-2010, 03:58:34 | George Gzirishvili

აღდგენილია სტატიის საწყისი ვარიანტი
07-02-2010, 12:46:29 | G3B

მშვენიერი სტატიაა, ვინც ამას ვერ გაიგებს ჯობია პროგრამისტობაზე მხოლოდ იოცნებოს )))
03-10-2008, 02:37:26 | BakBak


კომენტარის დატოვება
თქვენ არ შეგიძლიათ კომენტარების დატოვება.