رد: ممكن طلب شرح الباب 3 في الحوسبة
الـ two's complement ..
مثال..: جيبي الـ two's complement من 011010..
ينحل بطريقتين ..
أول طريقة..
two's complement = one's complement +1 ..
طبعن أول شيء نجيب الـ one's complement من الرقم وبعدين نجمعه مع الواحد..
الـ one's complement هو عبارة عن flip.. يعني بدل الواحد تحطي صفر وبدل الصفر تحطي 1..
يعني 011010
حتصير 100101
دحين نجمعها مع الواحد ..
100101
+
1
------------
0 وترفعي الواحد لفوق الصفر.. وتجمعي صفر + 1 = 1.. والباقي حينزل زي ماهو..
فـ حيصير الناتج
100110 = two's complement
ملاحظة.. الأستااذة قالتلنا انو 1+1 = 10
و 1+1+1 = 11
الطريقة الثانية (أسهل من الطريقة الأولى) حتمشي من اليمين لين تشووفي أول خانة فيها 1 في العدد اللي أعطاكي هوا.. 011010 ..
وفي المثال حقنا.. أول واحد اللي بالأحمر 011010
من بعد أول واحد تعملي flip .. يعني حتغيري الصفر لواحد والواحد لصفر..
حيطلع الناتج.. 100110
.........................
في صفحة 51 حلوة الملاحظات اللي كاتبها..
يقولك اذا تبي تخزني أي عدد.. شوفي اذا كان العدد موجب.. حتحوليه لباينري عادي.. وحتزودي أصفار عاليسار إذا طلعلتلك الخانات أقل من عدد الخانات المطلوبة في السؤال..
لكن إذا كان العدد سالب.. حتحولي العدد أول شيء لباينري.. وبعدين تجيبي التوزكومبلمنت منوو.. وحيتم تخزينه بالتوز كومبلمنت..
ملاحظة.. فقط في الـ sign & magnitude.. تحجزي خانة للإشارة..
شووفي مثال 3.12..
يقولك يبا يخزن 28 في 8 بت.. حتحوليه عادي لباينري.. وتزودي الأصفار لو طلع عدد الخانات أقل من 8.. وهنا زودنا 3 أصفار..
ملاحظة.. عشان ماتلخبطي ي بطتي.. في حالة كان الرقم موجب.. راح تعامليه زي الـ unsigned.. تحوليه لباينري عادي.. وانتهى الموضوع..
لكن في الحالة السالبة زي مثال 3.13
حتحوليه أول شيء بالطريقة العادية.. وبعدين تجيبي التوز كومبلمنت منوو..
------------------------
الـ overflow هنا.. حيكون نفس اللي قبل.. إذا طلع عدد الخانات أكثر ماحيتم تخزين الرقم..
------------------------
دحين حقولك كيف ترجعيه لديسمال من باينري..
أول شيء تعرفي إذا كان العدد موجب أو سالب.. من آخر رقم عاليسار يعني (0 أو 1).. بس زي ماقلتلك هنا بس تحتاجي دا الشيء عشان تعرفي متى تستخدمي التوز كومبلمنت.. يعني حتتعاملي مع 8 خانات عند التحويل لديسيمال (بشكل أوضح.. ماتحذفي الخانة الثامنة وتتعاملي مع 7 خانات زي الـ sign & magnitude..)
شوفي معايا مثال 3.14.. 00001101
مدام العدد موجب.. راح تحوليه لديسيمال بالطريقة العادية..
لكن شوفي معايا مثال 3.15 .. 11100110
هنا انتي عرفتي من الواحد اللي عاليسار انو العدد سالب..
حتجيبي التوز كومبلمنت من العدد.. عشان ترجعيه لأصله..
وحيطلعلك 00011010
ونجيب الديسميال منوو.. وبعدين في الاخير نحط جمب الناتج (-).. لأننا عرفنا ان العدد سالب من السؤال.. حيطلع الناتج -26
معلومة : لما تجيبي التوز كومبلمنت من العدد مرتين يرجعوو لأصلوو..
يعني مثلن لو جبتي.. التوز كومبلنت من العدد 00011010
حيطلعلك 11100110
ولما ترجعي تجيبي منو التوز كومبلمنت حيرجع للأصل اللي هوا 00011010
إن شاااء الله تكووووني فهمممتي علياااا :P ..
بعد ماأشرررررح آخرررر نقطة بنزلك أجوبة كم سؤال من البروبلمز عشان تختبري نفسك فيها وتشووفي كيف فهمك ^_^..
برررررررررررب :$
|