إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

شرح انظمه الارقام + شرح كتابه اكواد التحويل بينها

تقليص
هذا الموضوع مغلق.
X
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • شرح انظمه الارقام + شرح كتابه اكواد التحويل بينها

    السلام عليكم ورحمة الله وبركاته
    بسم الله الرحمن الرحيم
    رب اشرح لى صدرى ويسر لى امرى واحلل عقده من لسانى يفقهوا قولى
    اللهم لا علم لنا الا ماعلمتنا انك انت العليم الحكيم
    اللهم صلى على نبينا محمد وعلى اله وصحبه وسلم امين

    قبل البدأ فى الموضوع اتقدم بالشكر لجميع اخوانى القائمين على هذا المنتدى
    فوالله الذى لا اله لا هو ماوصلت لمستواى هذا الا بعدما اتعبتهم معى فى استفسارات كثيرة
    والله انى تعلمت اولى خطواتى فى البرمجه على ايديكم والان تعلمت لغات برمجه اخرى بحكم دراستى
    وكما قلنا سابقا ان هذا الموقع سيظل صرحا عظيما للتعليم وان شاء الله يتكاثر عدد المحترفين فيه لينتشر هذا العلم بين المسلمين
    واعدكم ان شاء الله بدروس جديده وحصريه فى لغتنا Lua ان شاء الله
    اما بعد ..
    وانا بالكليه كان الدكتور يشرح لنا انظمه العد ال Binary وال Decimal وال Hexa الخ..
    وراودتنى فكره تطبيق هذا المشروع على برنامج Autoplay Media Studio
    وان اقوم ببرمجة برنامج يفعل عمليه التحويل هذه
    ينقسم الشرح فى هذا الموضوع الى عده اقسام

    اولا شرح انظمه العد باستفاضه
    ثانيا شرح التحويل بينها وبين بعضها
    ثالثا كيف يتم نقوم بعمل كود للتحويل بين نظامي ال Binary وال Decimal
    رابعا كيف نقوم بعمل كود يحول بين ال Decimal وال Binary


    اولا شرح انظمه العد باستفاضه

    الان دعونا نشرح بأستفاضه ماهى انظمه العد وما فائدتها وما هو كل نوع
    اولا انظمه العد المعروفة لدى مبرمجين الحاسب الالى او مهندسين الالكترونيات بصفه عامه
    هى اربعه انظمه
    1- النظام العشرى - Decimal
    2- النظام الثنائى - Binary
    3- النظام الثمانى - Octal
    4- النظام السادس عشر - Hexadecimal

    ماهى انظمه العد ؟
    هى طريقه معينه تمكننا من معرفه ارقام متتاليه للتعبير عن عدد معين (تعريف معقد شوية)(فلسفى)
    اذا كان لدى عدد معين من السيارات فكيف اعبر عن هذا العدد ؟؟
    لدى سيارة بورشه + سياره فيرارى + سياره اودى + وبى ام دابليو + الفاروميو + لامبورجينى + فيات + هونداى + رينو + مازاراتى
    كم عدد السيارات ؟
    لعلنا فى هذا السؤال نقوم بالاجابه بالرقم 10 !
    ولكن هل هذه الاجابه صحيحه ؟؟
    وهل هناك اجابات اخرى ؟؟
    ياصديقى عندما خلق الله لنا الكون علم البشر كيفيه العد والارقام لكى يسهل علينا التواصل مع بيننا لبعض
    نحن البشر نتقن العد ولكن على نظام واحد فقط
    وهو النظام العشرى (Decimal) بمعنى ان تعبيرنا للاعداد فى اى لغه مبنى على هذا النظام !
    ولكن مع ذلك تبقى الاجابه الخاصه بسؤال عدد السيارات مجهوله
    فلو ذهبنا الى عدد السيارات التى امتلكها ستكون هناك 4 اجابات
    1- اول اجابه فى نظام العد عند البشر هى : 10 وهى بالتعبير عن هذا العدد فى النظام العشرى
    2- 1010 فى عالم الالات يمثل الرقم الذى امامك الرقم 10 وهو بالنظام الثنائى
    3- A فى عالم الذاكره العشوائيه داخل الالات Ram يكون التمثيل بهذا الرقم ولاتستغرب انه حرف لان فى النظام السادس عشر يتم استبدال بعض الارقام بحروف
    4- 12 وهى الاجابه فى نظام ال Octal
    اكتشفنا الان ان الاجابه تتعدد بتعدد الانظمه
    رغم تعدد هذه الانظمه الا ان الاساس والقاعده الخاصه فيها ثابته
    سأتناول فى هذا الشرح شرح للانظمه العددية وسنبدأ بنظامنا النظام العشرى
    قبل البدأ فيه اعلم اخى الكريم ان جميع هذه الانظمه مشتركه فى ان لكل نظام
    خانة احاد - خانة عشرات - خانة مئات - خانة الاف
    النظام العشرى يتكون من عشر ارقام بدايه من الصفر حتى الرقم 9 وبغض النظر ان الصفر ليس له قيمه الا انه عدد
    واليك هذا الجدول الذى يحتوى على جميع اعداد الانظمه الاربعه

    نلاحظ هنا انا النظام السادس عشر
    الارقام من 10 الى 15 تتمثل بالحروف ولاننسى لماذا اخر رقم 15 مع انه نظام مكون من 16 رقم ؟ السبب هو ان الصفر رقم بغض النظر عن انه ليس له قيمه
    الان نكمل موضوعنا
    لاننسى ان اقل قيمه رقميه فى النظام العشرى لاى خانه 0 واعلى قيمه فى هذا النظام هى 9 وهذا لاى خانه سواء الاحاد او العشرات او المئات الخ...
    النظام العشرى يتم العد فيه على النحو الاتى
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    وهنا خانه الاحاد
    امتلأت بأعلى رقم وهو 9 لذلك سنبدأ فى خانه جديده وهى العشرات ونضيف فيها رقم جديد
    وبعد ذلك نقوم بتصفير خانه الاحاد التى تم ملئها وهكذا
    10
    11
    12
    حتى نصل ل 19
    بعد ذلك نجد الخانه امتلئت من جديد فنضيف للخانه التى تليها رقم جديد ثم نقوم بتصفيرها من جديد
    20
    ثم نبدأ من جديد 21 الى 29 وتتكرر العمليه
    حتى نصل لرقم 99 فاذا وصلنا الى هذه الخانه نجد ان الاحاد امتلئ وايضا العشرات امتلأ فنجد اننا نقوم بالانتقال لخانه جديده ونقوم بالتصفير اول خانيتن
    100
    الى الان الامور بسيطه
    لنرى نظره بسيطه الان عن كيفية تمثيل الارقام فى هذا النظام ايضا
    لنأخذ على سبيل المثال هذا الرقم
    9240
    هذا الرقم تم تمثيله على النحو الاتى



    قم بجمع هذه الارقام مع بعضها ليكون الناتج هو
    9240

    لو لاحظنا لماذا 10pow0 و 10pow1
    الرقم 10 هو ال Base الخاص بالنظام والذى يمثل عدد ارقام هذا النظام اللى هما 10 ارقام من 0-9 كما قلنا سابقا !
    الان قد تعلمنا الفكره كيف يتم تمثيل الاعداد
    فى النظام العشرى وهنا ينتهى الجزء الخاص بالنظام العشرى .
    الان نأتى للنظام الثنائى
    Binary
    يتكون هذا النظام من رقمين فقط 0 و 1 والسبب هو ان الالة لا تفهم سوى الشارات الكهربية
    حين يكون هناك تيار يعنى الدائره مغلقه يكون هناك قيمه ولذلك رمزنا لها بال 1
    وحينما تكون الدائرة الكهربية مفتوحه لا يكون هناك قيمه ولذلك رمزنا لها بالرقم 0
    وهذه اللغه التى تفهمها الالات بحكم انها داره كهربيه .
    حينما كنا نتكلم فى النظام العشرى بدأنا خانه الاحاد
    واشرنا ان خانه الاحاد هى 10pow0
    وننتقل الى الخانة التى تليها حينما تمتلئ الخانه بأكبر رقم نطبق هذا الكلام الان
    نعلم جميعا ان الصفر ليس له قيمه
    لذلك لايعبر عن قيمه
    لنتابع هذه الصوره


    تعلمنا كيف الان نعد بالبينارى
    لكن كيف نقوم بالتحويل من النظام العشرى الى النظام الثنائى
    مثلا عندى الرقم 50 كيف اقوم بتحويله الى النظام الثنائى
    نقوم بقسمه ال 50 على ال Base تبعنا اللى هو 2
    ونأخذ باقى القسمه سنرى الان هذا فى الجدول

    هذه هى طريقة التحويل
    هناك طريقة اخرى وسنطبقها على العدد 120 وهى اننا نقوم بصناعه هذا الجدول
    يشير كلمه 2pwr1 الى 2 مرفوعه لاس 1
    نقوم بصناعه هذا الجدول ونحدد قيمته كما بالشكل التالى
    2pwr7 - 2pwr6 - 2pwr5 - 2pwr4 - 2pwr3 - 2pwr2 - 2pwr1 -2pwr0

    نبحث عن رقم 120 او اقرب رقم اصغر منه
    سنجد ان اقرب رقم اصغر منه هو 64 نضع تحته 1
    الان نطرح 120-64 يتبقى عندنا 56
    نعيد الكره ونبحث عن رقم 56 او رقم اصغر منه سنجد ال32 نضع تحتها 1
    نطرح الان 56 من 32 يتبقى لنا 24 نعود للجدول مرة اخره سنجد ان الرقم الاصغر هو 16 نضع تحتها 1
    الان نطرح 24-16 سيكون الناتج 8 نضع تحتها فى الجدول 1
    ثم نضع باقى الارقام من الجهة اليمنى اصفار يعطينا هذا العدد المقابل له فى البينارى
    نعيد حل مثال ال 120 بطريقة القسمه
    120 / 2 تساوى 60 والباقى 0 وهذا هو اول رقم من جهة اليمين
    60 / 2 تساوى 30 وباقى القسمه 0 الرقم الان وصلنا ل00
    30 / 2 تساوى 15 وباقى القسمه 0 الان وصلنا ل 000
    15 / 2 تساوى 7 وباقى القسمه 1 الان صار الرقم 1000
    7 / 2 تساوى 3 وباقى القسمه 1 صار الرقم الان 11000
    3 / 2 تساوى 1 وباقى القسمه 1 صار الرقم 111000
    1 / 2 يساوى صفر وباقى القسمه 1 صار الرقم النهائى 1111000
    الان نستطيع بكل سهولة تحويل النظام العشرى الى نظام ثنائى

    الان كيف نعكس الموضوع
    يعنى نحول النظام الثنائى لنظام عشرى
    لنقل ان عندنا الرقم 1101
    كيف نعرف ماهو بالنظام العشرى
    ارجع الى هذه الصوره

    لاننا سنستخدمها مرة اخرى ولكن بشكل اخر
    قم بإستبدال كل رقم 10 ب رقم 2
    ونكتب
    1101 تحتها
    مثل هذا الشكل

    عرفنا الان كيف تكون عمليه التحويل بين النظامين

    نظام الهكسا هو نفس الموضوع ولكن ال Base تبعه بيكون 16 يعنى كل الخطواط بنكررها بس بنستخدم 16
    ولا ننسى ان الارقام من 10-15 فيه تكون برموزمن a-f
    والنظام الثمانى نفس الحكاية ولكنه من 8 ارقام بيكون من 0 ل 7
    الان نأتى لطريقة البرمجه
    https://www.youtube.com/watch?v=UAJjQj03qQ0

    CODE
    [html]
    function convert_to_bin(decimal)
    bin = "";
    while decimal > 0 do
    if decimal % 2 == 1 then
    decimal = (decimal -1) / 2;
    bin = '1'..bin;

    else
    bin = '0'..bin
    decimal = decimal / 2;
    end
    end
    return bin;
    end

    function Convert_To_Decimal(numb)-- 1101
    size = String.Length(numb); -- 4
    current = nil;
    counter = size
    total = 0;
    value = 1;
    current_value = 0;
    for i=1 , size do
    current = String.Mid(numb, counter, 1);
    current_value = current * value
    total = total + current_value;
    value = value * 2;
    counter = counter - 1;
    end
    return total;
    end
    [/html]
    التعديل الأخير تم بواسطة القنـاص المصرى; الساعة 08-02-2015, 02:48 PM.

  • #2
    شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .
    لماذا وضعت الكود على شكل صورة ؟

    تعليق


    • #3
      جزاك الله خيرا اخانا القناص وبارك الله فيك

      ليت كل الأعضاء مثلك يستفدوا ويفيدوا فيكونوا أعضاء فاعلين

      .

      تعليق


      • #4
        السلام عليكم ورحمة الله وبركاته
        بارك الله فيك أخي القناص المصري .. متوقع منك تقديم هذا الشرح كما وعدتَ
        لقد أبدعت أخي الكريم مجهود في ميزان حسناتك إن شاء الله
        شكرا على هذه البرمجة

        وسأحاول أن أكمل مابدأته أنت بغية تحقيق التنوع المفيد
        إن شاء الله

        تعليق


        • #5
          شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

          تعليق


          • #6
            شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

            تعليق


            • #7
              إليك أخي القناص هذه المحاولة
              لحالة ارجاع أو تحويل العدد من الثنائي للعشري
              التجربة تحتاج لمراجعة صحتها نظريا ظهرت لي صحيحة
              لذلك وجب اخضاعها لتجربة عملية لتتبع أي خطأ في محاولة حاولت كتابتها
              بفكرة مختلفة
              كود PHP:
              Input.GetText("Input1");
              k=String.ToNumber((0*2)+String.Mid(p11));
              for 
              2String.Length(p) do
              math.max(1,String.ToNumber((k*2)+String.Mid(pi,1)));
              end
              Dialog
              .Message("Notice"k); 
              موفق
              وسأحاول أن أكتب كود تحويل للنظام الست عشري
              إن شاء الله

              تعليق


              • #8
                وهذه محاولة للتحويل من النظام الثنائي
                للنظام الست عشري بناء على شروحاتك أخي الكريم

                كتبتها كذلك تدعيما لموضوعك
                [html]p = String.ToNumber(Input.GetText("Input1"));
                g =""
                x=1
                repeat
                p,n =Math.Floor(p/16),Math.Mod(p,16)
                if n==10 then
                n = String.Replace(n, n, "a", false);
                elseif n==11 then
                n = String.Replace(n, n, "b", false);
                elseif n==12 then
                n = String.Replace(n, n, "c", false);
                elseif n==13 then
                n = String.Replace(n, n, "d", false);
                elseif n==14 then
                n = String.Replace(n, n, "e", false);
                elseif n==15 then
                n = String.Replace(n, n, "f", false);
                end
                x=x+1;g=g..n;
                until p <=0
                Dialog.Message("Notice", string.reverse(g));[/html]

                تعليق


                • #9
                  بسم الله الرحمن الرحيم

                  بارك الله فيكم اخي القناص على هذا الشرح المستفيض
                  وشكرا للاستاذ أبو بلقيس لاثراء الموضوع

                  تعليق


                  • #10
                    جزاك الله خيرا قناصنا الرائع

                    شرح رائع وجهد مشكور

                    بارك الله فيك ودائما مبدع ومميز

                    تعليق


                    • #11
                      شكرا يا اخى الكريم ابا بلقيس على اكوادك فهى والله خير مرجع وساعدتنى كثيرا
                      =

                      تعليق

                      مواضيع تهمك

                      تقليص

                      المنتدى: القسم العام نشرت بواسطة: Reem2Rabeh الوقت: 04-23-2025 الساعة 04:27 PM
                      المنتدى: ضبط وتوكيد الجودة نشرت بواسطة: HeaD Master الوقت: 04-15-2025 الساعة 09:30 AM
                      المنتدى: التصنيع والانتاج نشرت بواسطة: HeaD Master الوقت: 04-11-2025 الساعة 01:08 PM
                      المنتدى: القسم العام نشرت بواسطة: نوال الخطيب الوقت: 03-19-2025 الساعة 03:07 AM
                      المنتدى: الكمبيوتر والإنترنت نشرت بواسطة: عوض السوداني الوقت: 03-18-2025 الساعة 07:22 AM
                      يعمل...
                      X