Data Representation

الفصل الثاني: تمثيل البيانات والعمليات الحسابية

الهدف: إتقان التحويلات (Binary, Hex)، المتممات (2's Complement)، والفاصلة العائمة (IEEE 754).
1

Numbering Systems (أنظمة العد)

Decimal (Base 10)

الأرقام: 0-9

نظام البشر

Binary (Base 2)

الأرقام: 0, 1

لغة الآلة

Octal (Base 8)

الأرقام: 0-7

تجميع 3 بت

Hexadecimal (Base 16)

0-9, A, B, C, D, E, F

تجميع 4 بت

2

Conversions (التحويلات)

من عشري إلى أنظمة أخرى (القسمة)

للتحويل من Base 10 إلى أي نظام، نستخدم القسمة المتكررة ونأخذ الباقي (Remainder) من الأسفل للأعلى.

Example: 42 to Binary
42 / 2 = 21 (rem 0) LSB
21 / 2 = 10 (rem 1)
10 / 2 = 5 (rem 0)
5 / 2 = 2 (rem 1)
2 / 2 = 1 (rem 0)
1 / 2 = 0 (rem 1) MSB
Result: 101010

الكسور (Fractions)

للتحويل من عشري (كسر) إلى ثنائي، نستخدم الضرب المتكرر ونأخذ العدد الصحيح.

Example: 0.6875 to Binary
0.6875 x 2 = 1.375 → take 1
0.375 x 2 = 0.75 → take 0
0.75 x 2 = 1.5 → take 1
0.5 x 2 = 1.0 → take 1 (Stop)
Result: 0.1011
3

Signed Integers (الأعداد ذات الإشارة)

الطريقة (Method) كيفية تمثيل السالب مشكلة الصفر (Zeros) مثال (-5 in 8-bit)
Sign-and-Magnitude البت الأيسر للإشارة (1 سالب، 0 موجب). يوجد صفرين (+0, -0) 10000101
1's Complement اقلب كل البتات (0 يصبح 1 والعكس). يوجد صفرين (+0, -0) 11111010
2's Complement (الأهم) اقلب البتات + 1. صفر واحد فقط (Perfect) 11111011

ملاحظة هامة عن Overflow:

الـ Overflow يحدث عندما نجمع رقمين لهما نفس الإشارة وتكون النتيجة بإشارة مختلفة.
مثال: موجب + موجب = سالب (خطأ/Overflow).

4

Floating Point (IEEE 754)

32-bit Single Precision Format

Sign
Exponent (8 bits)
Mantissa (23 bits)
S
EEEEEEEE
MMM...MMM
1. Sign (S) 0 للموجب، 1 للسالب.
2. Exponent (E) يستخدم Excess-127 Notation.
Actual Exponent = E - 127.
3. Mantissa (M) الجزء الكسري (Normalized).
هناك "1" مخفي دائماً (Implicit 1).
EXAM VAULT (خزنة الاختبار)
SHORTCUT / خدعة

كيف تجد 2's Complement بسرعة؟

لا تقلب وتجمع 1 (طريقة طويلة).
الطريقة السريعة:
امشِ من اليمين لليسار. اترك أول "أصفار" واترك "أول واحد" كما هو.. ثم اقلب كل البتات التي تلي هذا الواحد.
10100 -> 01100 (لاحظ تركنا الـ 100 وقلبنا الباقي).

TRAP / فخ

Carry vs Overflow

Carry: هو البت الإضافي (البت التاسع في 8-bit). في الـ Unsigned هو خطأ، لكن في Signed يتم تجاهله غالباً.
Overflow: هو خطأ منطقي في الإشارة (موجب + موجب = سالب).
لا تخلط بينهما! قد يحدث Carry بدون Overflow والعكس.

IMPORTANT RANGE

نطاق الأعداد (Range) في 2's Complement

لعدد بتات $n$:
النطاق هو من $-2^{(n-1)}$ إلى $+2^{(n-1)} - 1$.
مثال (8 بت): من $-128$ إلى $+127$.
انتبه: السالب يتحمل رقماً إضافياً (الـ 128-) لأن الصفر يعتبر مع الموجب.

→ السابق (Ch 1) الفصل التالي (Ch 3) ←