السلام عليكم
الدرس الاول :
ان شاء الله سيكون هذا الدرس عن النظام العشري و الثنائي و التحويل بينهم
لاننى لا استطيع ان اتحدث عن الparallel port قبل ان تكونوا ملمين بهذه
النقطة وهذا الدرس منقول من منتدى الموسوعة العربية للكمبيوتر والانترنت
مع بعض التصرف والتعديلات
النظام العشري
نسخدم النظام هذا يوميا في حياتنا و في اغلب امورنا و هو بكل بساطة نظام الارقام على الاساس العشري و يحتوي على :
0 1 2 3 4 5 6 7 8 9
عدد مكونات النظام العشري هو عشرة ارقام , و هذا هو سبب تسميته بهذا الاسم حيث انه يكبر بعد كل عشرة ارقام, مثل بسيط هو التالي:
0
1
2
3
4
5
6
7
8
9
10
11
لاحظتم
الاختلاف بين ال9 و ال10 , حيث انه عندما انتهينا من الارقام ( اخر رقم هو
9) رجعنا للرقم الاول و هو صفر و اضفنا واحد بجواره, و لو واصلنا العد
لوصلنا الى ال19 و ثم نرجع الرقم 9 الى صفر و نضيف واحد الى الرقم 1 فيصبح
الرقم 20 و هكذا دواليك.
النظام الثنائي
كما قلنا ان النظام العشري يعتمد على اساس عشرة ارقام , فارقم الثنائي يعتمد على رقمين فقط و هما صفر وواحد
1 0
و بنفس الطريقة , عند الانتهاء من الارقام نضيف الرقم صفر و نزيد واحد , كما هو الحال
0
1
10
11
100
101
110
111
نلاحظ
ان النظام يتكون من رقمين فقط , صفر وواحد نبدا بالصفر ثم واحد ثم نضيف
واحد مكانالصفر و نضيف واحد بجوار الرقم عند انتهاء الارقام ( في حالتنا
انتهاء الارقام هما صفر وواحد)
ملاحظة مهمة:
الرقم التالي 101100 في النظام الثنائي لا يلفظ ب مئة وعشرة الالاف و مئة! بل يلفظ كالتالي:
واحد صفر واحد واحد صفر صفر
و
القاعدة هي : عندما نصل الى رقم صاحب الترتيب الذي يساوي اساس نظام العد (
في حالتنا هنا النظام الثنائي مثلا) نقوم بوضع الرقم صفر في الخانة
الحالية و نضيف الرقم واحد في الجهة التالية له.
الآن بعد ان عرفنا ما هو النظام العشري و النظام الثنائي , سنقوم بالتحويل بينهم .
التحويل من النظام الثنائي الى العشري
اولا, لنتكلم عن النظام العشري, مثلا الرقم 134 يتكون من التالي :
= 10 ^0 ضرب 4 + 10^1 ضرب 3 + 10^2 ضرب 1
= 4 + 30 + 100
= 134
اليست الطريقة صحيحة؟
لاحظتم
اننا استخدمنا اساس النظام العشري و هو الرقم عشرة و في المرحلة الاولى
رفعناه للأس صفر ثم واحد ثم اثنان و هكذا ثم نضربه في الرقم التالي و
نجمعهم في النهاية حتى نحصل على الناتج.
التحويل الى الرقم
الثنائي شبيه جدا , و بما ان اساس النظان الثنائي هو 2 فنستبدل الرقم 10 ب
2 , لنأخذ رقما معيناً لنحوله, فليكن الرقم 111 مثلا
111
= 2^0 ضرب 1 + 2^1 ضرب 1 + 2^2 ضرب 1
= 1 + 2 + 4
= 7
جميل! الرقم 111 ( واحد واحد واحد) يساوي 7 في النظام العشري.
لنجرب رقماً اخر و ليكن 1010101
1010101
= 2^0 ضرب 1 + 2^1 ضرب 0 + 2^2 ضرب 1 + 2^3 ضرب صفر + 2^4 ضرب واحد + 2^5 ضرب صفر + 2^6 ضرب واحد
= 1 + 0 + 4 + 0 + 16 + 0 + 64
= 85
التحويل من النظام العشري الى الثنائي
الطريقة
اسهل هنا, لنأخذ مثلا الرقم 400 , لتحويله نقسمه على 2 , فاذا كانت الناتج
يحتوي على كسور فيكون الرقم الاول من الرقم الثنائي هو 1 و اذا لم يتحوي
على كسور فيكون الرقم صفر
يعني :
400 / 2 = 200 , اذن الرقم الاول هو صفر
200 / 2 = 100 , صفر
100 / 2 = 50 , صفر ايضا
50 / 2 = 25 , صفر
25 / 2 = 12 , واحد
12 / 2 = 6 , صفر
6 / 2 = 3 , صفر
3 / 2 = 1 , واحد
1 / 2 = 0 , واحد
يصبح الناتج هو = 110010000
تبدأ من الاسفل و تصعد للاعلى .
بهذا نكون قد انتهينا من شرح هذه النقطة
وعلى
فكرة من يرى ان عملية التحويل بين النظامين صعبة الى حد ما فيمكنه ان
يستخدم الالة الحاسبةالخاصة بالويندوز لاجراء هذه التحويلات بعد تحويلها
للscientific mode
ولكن كان لابد من هذا الشرح لتكونوا ملمين بالموضوع
سؤال يطرح نفسه: ما علاقة هذا الموضوع بالparallel port؟؟
باختصار
شديد الparallel port مكون من 25 pin مقسمين بطريقة معينة (ساشرحها
بالتفصيل فى الدرس القادم) يوجد منهم 8pin يسموا بالData port
كل pin تأخذالقيمة 1 او 0
1 معناها ان هذه الpin عليها جهد مقداره حوالى 5 فولت
0 معناها ان هذه الpin ليس عليها فولت (تقريبا)
فاذا كنا على سبيل المثال نوصل 8 اجهزة مختلفين فى 8 pin وكنا نريد تشغيل الجهاز الاول فقط واطفاء الباقين
فى هذه الحالة لا يمكن التعامل مع الpin الاولى ( او اى pin) منفردة بل لابد من التعامل ع ال8 pin فى نفس الوقت
لذلك نضطر الى ارسال قيمة ثنائية الى parallel port كالتالى00000001 وهى تساوى 1 بالعشرى ايضا
ماذا لو كنا نريد تشغيل الاجهزة 1و5و8واطفاء الباقين
فى هذه الحالة نريد ارسال قيمة ثنائية تساوى 10010001 وهذه القيمة تساوى 145 بالنظام العشرى وهكذا
دوال للتحويل بين انظمة الاعداد المختلفة
اولا : دالة للتحويل من النظام العشرى الى النظام الثنائ Decimal to Binary
دالة ثانية للتحويل Decimal Integer to Binary String
دالة ثالثة للتحويل Decimal to Binary ايضا
ثانيا : دالة للتحويل من Binary to Decimal
وعندك فى التحميل مثالين للتحويل بين انضمة الاعداد المختلفة
والى اللقاء فى الدرس القادم ان شاء الله
اضغط على الفراشتين للتحميل
الدرس الاول :
ان شاء الله سيكون هذا الدرس عن النظام العشري و الثنائي و التحويل بينهم
لاننى لا استطيع ان اتحدث عن الparallel port قبل ان تكونوا ملمين بهذه
النقطة وهذا الدرس منقول من منتدى الموسوعة العربية للكمبيوتر والانترنت
مع بعض التصرف والتعديلات
النظام العشري
نسخدم النظام هذا يوميا في حياتنا و في اغلب امورنا و هو بكل بساطة نظام الارقام على الاساس العشري و يحتوي على :
0 1 2 3 4 5 6 7 8 9
عدد مكونات النظام العشري هو عشرة ارقام , و هذا هو سبب تسميته بهذا الاسم حيث انه يكبر بعد كل عشرة ارقام, مثل بسيط هو التالي:
0
1
2
3
4
5
6
7
8
9
10
11
لاحظتم
الاختلاف بين ال9 و ال10 , حيث انه عندما انتهينا من الارقام ( اخر رقم هو
9) رجعنا للرقم الاول و هو صفر و اضفنا واحد بجواره, و لو واصلنا العد
لوصلنا الى ال19 و ثم نرجع الرقم 9 الى صفر و نضيف واحد الى الرقم 1 فيصبح
الرقم 20 و هكذا دواليك.
النظام الثنائي
كما قلنا ان النظام العشري يعتمد على اساس عشرة ارقام , فارقم الثنائي يعتمد على رقمين فقط و هما صفر وواحد
1 0
و بنفس الطريقة , عند الانتهاء من الارقام نضيف الرقم صفر و نزيد واحد , كما هو الحال
0
1
10
11
100
101
110
111
نلاحظ
ان النظام يتكون من رقمين فقط , صفر وواحد نبدا بالصفر ثم واحد ثم نضيف
واحد مكانالصفر و نضيف واحد بجوار الرقم عند انتهاء الارقام ( في حالتنا
انتهاء الارقام هما صفر وواحد)
ملاحظة مهمة:
الرقم التالي 101100 في النظام الثنائي لا يلفظ ب مئة وعشرة الالاف و مئة! بل يلفظ كالتالي:
واحد صفر واحد واحد صفر صفر
و
القاعدة هي : عندما نصل الى رقم صاحب الترتيب الذي يساوي اساس نظام العد (
في حالتنا هنا النظام الثنائي مثلا) نقوم بوضع الرقم صفر في الخانة
الحالية و نضيف الرقم واحد في الجهة التالية له.
الآن بعد ان عرفنا ما هو النظام العشري و النظام الثنائي , سنقوم بالتحويل بينهم .
التحويل من النظام الثنائي الى العشري
اولا, لنتكلم عن النظام العشري, مثلا الرقم 134 يتكون من التالي :
= 10 ^0 ضرب 4 + 10^1 ضرب 3 + 10^2 ضرب 1
= 4 + 30 + 100
= 134
اليست الطريقة صحيحة؟
لاحظتم
اننا استخدمنا اساس النظام العشري و هو الرقم عشرة و في المرحلة الاولى
رفعناه للأس صفر ثم واحد ثم اثنان و هكذا ثم نضربه في الرقم التالي و
نجمعهم في النهاية حتى نحصل على الناتج.
التحويل الى الرقم
الثنائي شبيه جدا , و بما ان اساس النظان الثنائي هو 2 فنستبدل الرقم 10 ب
2 , لنأخذ رقما معيناً لنحوله, فليكن الرقم 111 مثلا
111
= 2^0 ضرب 1 + 2^1 ضرب 1 + 2^2 ضرب 1
= 1 + 2 + 4
= 7
جميل! الرقم 111 ( واحد واحد واحد) يساوي 7 في النظام العشري.
لنجرب رقماً اخر و ليكن 1010101
1010101
= 2^0 ضرب 1 + 2^1 ضرب 0 + 2^2 ضرب 1 + 2^3 ضرب صفر + 2^4 ضرب واحد + 2^5 ضرب صفر + 2^6 ضرب واحد
= 1 + 0 + 4 + 0 + 16 + 0 + 64
= 85
التحويل من النظام العشري الى الثنائي
الطريقة
اسهل هنا, لنأخذ مثلا الرقم 400 , لتحويله نقسمه على 2 , فاذا كانت الناتج
يحتوي على كسور فيكون الرقم الاول من الرقم الثنائي هو 1 و اذا لم يتحوي
على كسور فيكون الرقم صفر
يعني :
400 / 2 = 200 , اذن الرقم الاول هو صفر
200 / 2 = 100 , صفر
100 / 2 = 50 , صفر ايضا
50 / 2 = 25 , صفر
25 / 2 = 12 , واحد
12 / 2 = 6 , صفر
6 / 2 = 3 , صفر
3 / 2 = 1 , واحد
1 / 2 = 0 , واحد
يصبح الناتج هو = 110010000
تبدأ من الاسفل و تصعد للاعلى .
بهذا نكون قد انتهينا من شرح هذه النقطة
وعلى
فكرة من يرى ان عملية التحويل بين النظامين صعبة الى حد ما فيمكنه ان
يستخدم الالة الحاسبةالخاصة بالويندوز لاجراء هذه التحويلات بعد تحويلها
للscientific mode
ولكن كان لابد من هذا الشرح لتكونوا ملمين بالموضوع
سؤال يطرح نفسه: ما علاقة هذا الموضوع بالparallel port؟؟
باختصار
شديد الparallel port مكون من 25 pin مقسمين بطريقة معينة (ساشرحها
بالتفصيل فى الدرس القادم) يوجد منهم 8pin يسموا بالData port
كل pin تأخذالقيمة 1 او 0
1 معناها ان هذه الpin عليها جهد مقداره حوالى 5 فولت
0 معناها ان هذه الpin ليس عليها فولت (تقريبا)
فاذا كنا على سبيل المثال نوصل 8 اجهزة مختلفين فى 8 pin وكنا نريد تشغيل الجهاز الاول فقط واطفاء الباقين
فى هذه الحالة لا يمكن التعامل مع الpin الاولى ( او اى pin) منفردة بل لابد من التعامل ع ال8 pin فى نفس الوقت
لذلك نضطر الى ارسال قيمة ثنائية الى parallel port كالتالى00000001 وهى تساوى 1 بالعشرى ايضا
ماذا لو كنا نريد تشغيل الاجهزة 1و5و8واطفاء الباقين
فى هذه الحالة نريد ارسال قيمة ثنائية تساوى 10010001 وهذه القيمة تساوى 145 بالنظام العشرى وهكذا
دوال للتحويل بين انظمة الاعداد المختلفة
اولا : دالة للتحويل من النظام العشرى الى النظام الثنائ Decimal to Binary
- الكود:
'A quick and easy function to return the binary
value for a number, without any preceding "0"s. This function returns
a string with the binary number.
Public Function dec2bin(mynum As Variant) As String
Dim loopcounter As Integer
If mynum >= 2 ^ 31 Then
dec2bin = "Too big"
Exit Function
End If
Do
If (mynum And 2 ^ loopcounter) = 2 ^ loopcounter Then
dec2bin = "1" & dec2bin
Else
dec2bin = "0" & dec2bin
End If
loopcounter = loopcounter + 1
Loop Until 2 ^ loopcounter > mynum
End Function
دالة ثانية للتحويل Decimal Integer to Binary String
- الكود:
'just put this function any where and pass a a
number from 0 to 65535. You can pass higher that I think, but the
function only pads the resulting string to 8 digit string or 16 digit
string. anyway here it is:
Function dec2bin(N As Long) As String
ell:
If N > 0 Then
a = a + CStr(N Mod 2)
N = N \ 2
GoTo ell
End If
a = StrReverse(a)
g = Len(a)
If g < 8 Then
t = String$(8 - Len(a), "0")
a = t + a
End If
If g > 8 Then
t = String$(16 - Len(a), "0")
a = t + a
End If
dec2bin = a
End Function
دالة ثالثة للتحويل Decimal to Binary ايضا
- الكود:
Private Sub Command1_Click()
MsgBox Dec2Bin(1024)
End Sub
Function Dec2Bin(ByVal n As Long) As String
Do Until n = 0
If (n Mod 2) Then Dec2Bin = "1" & Dec2Bin Else Dec2Bin = "0" & Dec2Bin
n = n \ 2
Loop
End Function
ثانيا : دالة للتحويل من Binary to Decimal
- الكود:
'A simple function to convert Binary numbers to Decimal numbers.
Function Bin2Dec(Num As String) As Long
Dim n As Integer
n = Len(Num) - 1 a = n
Do While n > -1
x = Mid(Num, ((a + 1) - n), 1)
Bin2Dec = IIf((x = "1"), Bin2Dec + (2 ^ (n)), Bin2Dec)
n = n - 1
Loop
End Function
وعندك فى التحميل مثالين للتحويل بين انضمة الاعداد المختلفة
والى اللقاء فى الدرس القادم ان شاء الله
اضغط على الفراشتين للتحميل