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

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

التحويل إلى النظام الثنائي

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

  • التحويل إلى النظام الثنائي

    السلام عليكم ورحمة الله وبركاته
    أخي المبرمج ... تعرف بأن الأعداد :12 , 255 , 301 .... الخ
    هي أعداد مكتوبة في النظام العشري أما نظام العد الثنائي فهو يعتمد بالأساس على الارقام 0 و 1
    و العدد المكتوب في النظام الثنائي مستمد من عملية تحويل لعدد مكتوب في النظام العشري
    بمعنى يمكنك تحويل العدد من الثنائي الى العشري و العكس
    و ما يهمني هو كيف أحول العدد من نظاما عشريا إلى نظاما ثنائيا بأبسط الطرق

    هنااك في الموقع أعمال لافته و هادفة
    اضغط للاطلاع

    عملية التحويل تتم كمايلي :
    تتم قسمة العدد المصدر أو الذي نريد تحويله على العدد 2 ونحتفظ بالباقي
    ثم تتواصل العملية باعتماد ناتج القسمة يكون دائما باهمال الجزء العشري أي نأخذ الجزء الصحيح
    تتوقف عملية القسمة عندما يصبح ناتج القسمة = 0
    بواقي القسمة تجمع بترتيب عكسي ذلك التجميع هو المعبر تماما عن التحويل الثنائي للعدد المراد تحويله

    لاحظ الصورة : لآلية القسمة على 2 دائما مع أخذ ناتج القسمة الصحيح
    ثم جمعت البواقي بترتيب عكسي فكان العدد 1100 هو التحويل للعدد 12 الذي انطلقت منه القسمة


    المطلوب أخي :
    - عدم ارفاق ملف مفتوح
    - الابتعاد عن الكتابة في global functions للأكواد بعض الزملاء يرون في ذلك تعقيدا برمجي
    - شرح طريقة العمل أو وضع آلية حل دقيقة

    تقديري

    ساهم في دفع اخوانك خطوة للامام

  • #2
    السلام عليكم ورحمة الله وبركاته
    مجرد فكرة
    كود:
    math.fmod(x, y)
    موفق بإذن الله ... لك مني أجمل تحية .

    تعليق


    • #3
      سأقوم بتصوير شرح كامل عن كيفية برمجة المحول بين النظامين واعتذر فى موضوع ال Global Functions سأقوم بتفصيل الكود ليكون اكثر وضوحا

      تعليق


      • #4
        السلام عليكم ورحمة الله وبركاته
        شكرا أخي صالحي دالة باقي القسمة
        كود PHP:
        math.fmod(xy
        هي احد الاسس في الحصول على النتائح
        وهي نفسها
        كود PHP:
        math.mod(xy
        وهي نفسها
        كود PHP:
        Math.Mod(xy
        شكرا

        تعليق


        • #5
          المشاركة الأصلية بواسطة القنـاص المصرى مشاهدة المشاركة
          سأقوم بتصوير شرح كامل عن كيفية برمجة المحول بين النظامين واعتذر فى موضوع ال Global Functions سأقوم بتفصيل الكود ليكون اكثر وضوحا
          بارك الله فيك

          و أنا بدوري سأضع خطوات عمل للحصول على التحويل من العشري الى الثنائي كمرحلة أولى
          بشكل مختلف لاثراء العمل
          إن شاء الله

          تعليق


          • #6
            خطوات العمل :
            01 - الاعلان على مصدر العدد المراد تحويله ويكون بصيغة رقمية و ليست نصية
            02- افتراض متغير مساوي للقيمة 1
            03-انشاء دالة تكرارية تقوم بـ :
            أ - قسمة العدد على 2 مع مراعاة الجزء الصحيح "Math.Floor"
            ب -قسمة الناتج السطر السابق باستمرار على 2 و الاحتفاظ بالباقي
            ملاحظة : أ و ب ينفذا في وقت واحد
            ج - تزايد القيمة الافتراضية
            د - تخزين البواقي

            04 - توقيف التكرار عند الوصول لناتج يساوي 0
            05 - عرض الناتج بالمقلوب

            هذا مافكرت فيه و سيتم تجسيده ان شاء الله

            تعليق


            • #7
              بسم الله الرحمن الرحيم
              شكرا لك استاذي الكريم على هذا التوضيح الرائع
              ------------------------------------------------
              خطوات العمل :
              01 - الاعلان على مصدر العدد المراد تحويله ويكون بصيغة رقمية و ليست نصية
              02- افتراض متغير مساوي للقيمة 1
              03-انشاء دالة تكرارية تقوم بـ :
              أ - قسمة العدد على 2 مع مراعاة الجزء الصحيح "Math.Floor"
              ب -قسمة الناتج السطر السابق باستمرار على 2 و الاحتفاظ بالباقي
              ملاحظة : أ و ب ينفذا في وقت واحد
              ج - تزايد القيمة الافتراضية
              د - تخزين البواقي

              04 - توقيف التكرار عند الوصول لناتج يساوي 0
              05 - عرض الناتج بالمقلوب

              هذا مافكرت فيه و سيتم تجسيده ان شاء الله
              ----------------------------------------------

              في الفقرة ج ماذا تقصد بالقيمة الافتراضية ----- ؟

              موفق بإذن الله ... لك مني أجمل تحية .

              تعليق


              • #8
                الفقرة ج متعلقة بالخطوة الثانية التي افترضنا فيها قيمة افتراضية
                02- افتراض متغير مساوي للقيمة 1

                تعليق


                • #9
                  بسم الله الرحمن الرحيم
                  السلام عليكم ورحمة الله وبركاته

                  كتبت في مشاركة سابقة طريقة معينة لانجاز المطلوب
                  أي تصور نظري هل يمكن تحقيقه ؟ هل يعترض التخطيط النظري
                  مع التنفيذ العملي

                  نبدأ و نشوف النتائج في الاخير :
                  01 - الاعلان على مصدر العدد المراد تحويله ويكون بصيغة رقمية و ليست نصية
                  من البديهي أن نعلن بطرق مختلفة ولتكن قراءة من أنبوت
                  [html]p =Input.GetText("Input1");[/html]
                  حيث سيمثل P العدد الذي سنحوله و بماأنه عدد وجب التعبير عن الخطوة الاولى بصيغة
                  رقمية ليكون الكود المناسب للخطوة الأولى هو:
                  [caution][html]p = String.ToNumber(Input.GetText("Input1")); [/html][/caution]
                  --------------------------------------------------------------------------------------------
                  الخطوة الثانية :
                  02- افتراض متغير مساوي للقيمة 1
                  ليس صعب أن نعطي قيمة 1 لأي متغير و ليكن x
                  - الكود :
                  [caution]
                  كود PHP:
                  x=
                  [/caution]
                  هذه القيمة ستتزايد في الدالة التكرارية ثم تتوقف عند حد معين
                  -----------------------------------------------------------------
                  الخطوة الثالثة :
                  03-انشاء دالة تكرارية تقوم بـ :
                  أ - قسمة العدد على 2 مع مراعاة الجزء الصحيح "Math.Floor"
                  ب -قسمة الناتج السطر السابق باستمرار على 2 و الاحتفاظ بالباقي
                  ملاحظة : أ و ب ينفذا في وقت واحد
                  سأختار الدالة repeat لتنفيذ التكرار
                  [caution][html]repeat[/html][/caution]

                  ماذا سيتكرر طبعا الخطوة أ و ب في وقت واحد
                  سأضع هنا حدين الحد الاول ليكن p يقابله قسمة الجزء الصحيح على 2
                  كود PHP:
                  Math.Floor(p/2
                  الحد الثاني ليكن n يقابله تنفيذا استخلاص باقي قسمة p على 2
                  [html]Math.Mod(p,2)[/html]
                  وبماأننا نريد تنفيذ هاتين المرحلتين في وقت واحد
                  سيكون الكود المناسب لهذه الخطوة :
                  [warning][html]p,n =Math.Floor(p/2),Math.Mod(p,2)[/html][/warning]

                  في المرحلة الموالية في داخل الدالة التكرارية سيتزايد العداد x عند كل دورة
                  ج - تزايد القيمة الافتراضية
                  ليصبح الكود المضاف لما سبق
                  [caution][html]x=x+1[/html][/caution]
                  -------------------------------------------
                  نواصل تنفيذ الخطوات وصلنا إلى تخزين البواقي
                  د - تخزين البواقي
                  سنفرض متغير وليكن g في كل مرة أو في كل دورة يخزن
                  باقي القسمة
                  مع ملاحظة أن g ستكون بمثابة حاوية نتائج لذلك وجب الاعلان عليها
                  فارغة قبل بدء التكرار
                  كود :
                  [caution]
                  كود PHP:
                  g=g..n
                  [/caution]
                  -------------------------------------------
                  المرحلة الرابعة توقيف التكرار = توقيف القسمة و انهاء العملية
                  وذلك يحدث عند ناتج القسمة يساوي 0 أو سالب
                  04 - توقيف التكرار عند الوصول لناتج يساوي 0
                  الكود :
                  [caution][html]until p <=0[/html][/caution]
                  ----------------------------------------------------
                  الان صار العمل جاهز لو نكتب مثلا 12 في الانبوت و نسخرج قيمة
                  p في رسالة سيكون الناتج 0011 نعم هكذا و هو غير صحيح
                  و حتى يكون صحيح يجب قلب الناتج
                  نجرب و نحوصل ما تم ذكره أولا :
                  [html]p = String.ToNumber(Input.GetText("Input1"));
                  g =""
                  x=1
                  repeat
                  p,n =Math.Floor(p/2),Math.Mod(p,2)
                  x=x+1;g=g..n;
                  until p <=0
                  Dialog.Message("Notice", g);[/html]

                  تبقى آخر مرحلة نلتقي بود

                  تعليق


                  • #10
                    تفضل اخى
                    http://sites.ienajah.com/vb2/showthread.php?p=277347

                    تعليق


                    • #11
                      المشاركة الأصلية بواسطة القنـاص المصرى مشاهدة المشاركة
                      بارك الله فيك أخي تم الاطلاع على الموضوع الممتاز شكرا

                      ومواصلة للموضوع
                      كنت قد وصلت في آخر مرة الى الحوصلة التالية
                      [html] p = String.ToNumber(Input.GetText("Input1"));
                      g =""
                      x=1
                      repeat
                      p,n =Math.Floor(p/2),Math.Mod(p,2)
                      x=x+1;g=g..n;
                      until p <=0
                      Dialog.Message("Notice", g);[/html]

                      وقلنا لو نقوم بتحويل العدد 12 مثلا ستطلع النتائج بهذا الشكل 0011
                      وحتى تكون النتيجة صحيحة أي 1100 علينا تحقيق الخطوة الاخيرة
                      05 - عرض الناتج بالمقلوب
                      أي ناتج ؟ نعم القيمة g التي ظهرت في Message
                      لعكس اي نص نستعمل دالة lua :
                      reverse
                      ليصبح الاعلان على النتيجة ليس g بل مقلوبها

                      كود محقق لذلك :
                      [caution][html]Dialog.Message("Notice", string.reverse(g));[/html][/caution]

                      ومنه سيكون مظهر الكود النهائي الكفيل بالتحويل من النظام العشري
                      للثنائي هو :
                      [html]p = String.ToNumber(Input.GetText("Input1"));
                      g =""
                      x=1
                      repeat
                      p,n =Math.Floor(p/2),Math.Mod(p,2)
                      x=x+1;g=g..n;
                      until p <=0
                      Dialog.Message("Notice", string.reverse(g));[/html]

                      جرب الان بوضع الكود في زر ليحول ما يكتب في الانبوت1 ..موفق
                      نقرأ طرق أخرى إن شاء الله و ما قدم ماهو الا اثراء لموضوع الأخ القناص
                      المصري بغية تنويع الحلول و تبادل الافكار

                      و نلتقي في كيفية إجراء العكس في موضوع آخر
                      إن شاء الله

                      سلام
                      التعديل الأخير تم بواسطة ثامر أبو بلقيس; الساعة 08-02-2015, 08:16 PM.

                      تعليق


                      • #12
                        التعديل الأخير تم بواسطة ثامر أبو بلقيس; الساعة 09-02-2015, 11:25 AM.

                        تعليق

                        مواضيع تهمك

                        تقليص

                        المنتدى: القسم العام نشرت بواسطة: 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