Binary and Hex

بسم الله الرحمن الرحيم

ثنائي إلى ست عشري :

1-      يقسم العدد الثنائي إلى أجزاء كل منها عبارة عن 4 خانات

2-      باستخدام الجدول التالي , التعويض عن كل 4 خانات ثنائية بما يقابلها من النظام الست عشري

0

1

10

11

100

101

110

111

0

1

2

3

4

5

6

7

1000

1001

1010

1011

1100

1101

1110

1111

8

9

A

B

C

D

E

F

            مثال : 011101011000011001101001010

            1010 | 0100 | 0011 | 0011 | 1100 | 1010 | 011

           A | 4 | 3 | 3 | C | A |3=3AC334A

ست عشري إلى ثنائي :

1- يحول كل رمز ست عشري إلى نظيره بالنظام الثنائي , لكن يجب أن يكون مكون من 4 خانات (5 مثلاً = 0101)

2- يتم التخلص من الأصفار على اليسار

مثال : A5 تصبح 10100101 (A = 1010 , 5 = 0101)

Binary and Oct

بسم الله الرحمن الرحيم

طريقة التحويل من النظام الثنائي إلى الثماني والعكس , تعتمد على التعويض فقط .

ثنائي إلى ثماني :

1-      بدءاً من اليمين , يقسم الرقم الثنائي إلى أجزاء كل منها يمثل 3 خانات (نترك ما يتبقى كما هو)

2-      يحول كل جزء إلى ما يماثله من النظام العشري

3-      أو بالتعويض عن كل 3 خانات ثنائية بما يقابلها من النظام الثماني

000

001

010

011

100

101

110

111

0

1

2

3

4

5

6

7

4-      لاحظ أن الأصفار في أقصى اليسار لا تهم , فالقيم 1 , 01 , 001 متساوية (في أقصى يسار الرقم)

مثال : 10111011001110

110 | 001 | 011 | 111 | 10

6 | 1 | 3 | 7 | 2 = 27316

ثماني إلى ثنائي :

1-      يقسم العدد الثماني إلى اجزاء كل منها خانة واحدة

2-      التعويض عن كل قيمة ثمانية بما يقابلها بالنظام الثنائي باستخدام الجدول .

Binary to Decimal

بسم الله الرحمن الرحيم

طريقة التحويل من النظام الثنائي إلى العشري

الطريقة الأولى

1-      بدءاً من اليمين , تكتب قوى العدد 2 , ابتداءاً من الأس صفر إلى أن يصبح عدد القوى = عدد خانات الرقم الثنائي

2-      يفضل كتابة القوى مقابلة لخانات الرقم , بحيث تكون كل خانة مقابلة لإحدى القوى

3-      تجمع القوى المقابلة للخانات التي تحتوي على الرقم 1 فقط

مثال : 11010111101

1

0

1

1

1

1

0

1

0

1

1

1

2

4

8

16

32

64

128

256

512

1024

1 + 0 + 4 + 8 + 16 + 32 + 0 + 128 + 0 + 512 + 1024 = 1725

الطريقة الثانية

1-      بدءاً من اليسار , بالمرور على كل خانة , يضاعف المجموع الحالي (بدءاً من الصفر طبعاً) ويجمع عليه رقم الخانة

مثال : 111101

المجموع

الضعف

رقم الخانة

المجموع الجديد

0

0

1

1

1

2

1

3

3

6

1

7

7

14

1

15

15

30

0

30

30

60

1

61

مقدمة إلى أنظمة العد

بسم الله الرحمن الرحيم

من المعروف ان جهاز الكمبيوتر لا يتعامل مباشرة مع جميع الأرقام والحروف ,إنما 1 (وجود إشارة كهربائية) و 0 (عدم وجود إشارة كهربائية) , وهذا ما يعرف بنظام العد الثنائي , أما في حياتنا اليومية , وفي المسائل الرياضية التي يتعامل معها معظمنا نستخدم نظام العد العشري 0 , 1 , 2 … 123 ..

طبعاً النظام العشري يتكون من 10 أرقام أساسية (من 0 إلى 9) , ثم بعد ذلك 11 , 12 .. , لكن في النظام الثنائي , وبما أنه يتكون من رقمين أساسين فقط , فسيكون العد به يبدأ من 0 , 1 , 10 , 11 , 100 , 101 , 110 , 111 , 1000 , 1001 وهكذا .

النظام الثماني يتكون من الأرقام 0..7 , لا يوجد 8 ولا 9 . فيكون الرقم العشري 7 بالنظام الثماني 7 , لكن 8 بالعشري هو 10 بالثماني , 16 عشري هو 20 بالنظام الثماني وهكذا .

النظام الست عشري (او االسداسي عشري , السداس عشري :)) يتكون من الأرقام 0..9 و الحروف الإنجليزية A..F , الرقم العشري 16 يقابل 10 بالست عشري , 32 يقابل 20 بالست عشري , 160 عشري تقابل A0 بالت عشري

 في الإنجليزية : Binary تعني الثنائي , Octal الثماني , Decimal العشري , Hexadecimal الست عشري (Hex تعني ستة , و Decimal تعني عشري) .

عند كتابة الرقم 10001101  يتم التعبير عن النظام الممثل للرقم بكتابة رقم الأساس مصغر في أسفل يمين الرقم الأساسي .

في النظام العشري الأساس هو 10 , لدينا خانات للآحاد (10 أس 0) , العشرات (10 أس 1) , المئات (10 أس 2) , الألوف (10 أس 3) ..

لكن في النظام الثنائي الأساس هو 2 , فستكون الخانة الآولى آحاد , الثانية 2 , الثالثة 4 , الرابعة 8 , الخامسة 16 وهكذا

في النظام الثماني الأساس 8 , الخانات ستكون 1 , 8 , 64 , 512 .. , وفي الست عشري الأساس 16 ..

ملاحظة : في النظام الست عشري يكتب اللاحقة h أو البادئة 0x للدلالة على ان الرقم بنظام Hex .

في تصنيف “نظم العد” وضعت 6 طرق للتحويل مباشرة بين هذه الأنظمة , للتحويلات الأخرى (مثلاً Hex إلى Oct , يحول Hex إلى Binary ثم إلى Oct)

هذا الجدول يوضح أول 16 قيمة في الأنظمة الأربعة :

Bin

0

1

10

11

100

101

110

111

Oct

0

1

2

3

4

5

6

7

Dec

0

1

2

3

4

5

6

7

Hex

0

1

2

3

4

5

6

7

Bin

1000

1001

1010

1011

1100

1101

1110

1111

Oct

10

11

12

13

14

15

16

17

Dec

8

9

10

11

12

13

14

15

Hex

8

9

A

B

C

D

E

F

قد يبدو الأمر مربكاً في البداية , وهذا لعدم استخدام هذه الانظمة في الحياة اليومية كثيراً ,إذا تقتصر استخداماتنا العادية على النظام العشري فقط .

هذه مقدمة بسيطة جداً عن هذه الأنظمة , وإن شاء الله سأشرح طرق التحويل الأساسية الستة لهذه الأنظمة 🙂

حل المشكلة رقم 2 – Project Euler

بسم الله الرحمن الرحيم

المشكلة 2 من Project Euler

المطلوب : مجموع القيم الزوجية الأقل من 4.000.000 في متوالية Fibonacci والتي تقبل القسمة على 3 أو 5 .

متوالية Fibonacci : متوالية كل حد فيها هو حاصل جمع الحدين السابقين له , بدءاً بالحدين 1 , 2 ( بالتالي أول عشرة حدود : 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89 )

فكرة الحل : حلقة تتأكد من أن العدد قابل للقسمة على 3 و 5 و أنه أقل من 4 ملايين .

الكود :

var
 i1 , Sum : integer ;
 i2 , Tmp : integer ;

begin
 Sum := 0 ;
 i2 := 1 ;
 i1 := 0;

 repeat
 // Generating the sequence
 Tmp := i2 ;
 i2 := i2 + i1 ;
 i1 := Tmp ;

 // Checking the number
 if (Odd(i1) = False) and (i1 < 4000000) then
 Sum := i1 + Sum ;

 until i2 >= 4000000 ;

 Writeln(IntToStr(Sum)) ;
 Readln ;

end.
<strong>

ملاحظة : لم أضع حل المشكلة الأولى لأنها سهلة جداً.

وإن شاء الله سأضع حل المشكلة الثالثة والرابعة خلال الأسبوع الحالي

Project Euler موقع للألغاز البرمجية

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

موقع Project Euler موقع خاص بالألغاز والتحديات الرياضية الشيقة جداً والتي يمكنك حلها بأي لغة برمجة تتقنها , أو حتى بالورقة والقلم .

يجب التسجيل في الموقع بالطبع , ثم من خلال وصلة Problems التي ستظهر لك ( أعلى الصفحة ) يمكنك البدء في قراءة وحل الأسئلة .

فكرة الموقع رائعة جداً , وتتطور مهاراتك الرياضية والبرمجية بالتطبيق العملي , كما أني أعتبرها في رأيي أفضل طريقة للتعلم , إذا إنك في الغالب لن تحتاج إلى خبرة طويلة في البرمجة ودوال اللغة إنما إلى المبادئ الأساسية (حلقات التكرار , المقارنة , المصفوفات , ..) والباقي سيعتمد على قدرتك على الوصول إلى خوارزميات حل المسائل في أقل وقت وبأسهل طريقة ممكنة .

ما دفعني لكتابة هذه التدوينة هو عدد المشتركين في الموقع من الدول العربية , فهو لا يتعدى 600 ! وإسرائيل مثلاً فيها أكثر من 700 مشترك , ( الإحصائيات في رابط Statistics ) لذا أحببت التنويه إليه عسى أن يستفيد منه أكبر عدد من الزوار 🙂

وإن شاء الله سأقوم بطرح حلول المسائل التي أنتهي منها في قسم خاص من المدونة , للنقاش وأيضاً لمساعدة من يصعب عليه الحل ( لن أضع الحل مباشرة طبعاً 😀 )

ملاحظة : في المدونة سيكون العمل على المشاريع من النوع Console , إلا إن كان هناك حاجة للرسم فسأستخدم VCL

خواص الإشارات واللمس في Delphi 2010

بسم الله الرحمن الرحيم

أهنئ كل إخواني الدلفاويين بصدور Delphi 2010 الجديد , والذي يحمل العديد من الخواص الجديدة والرائعة .

الفيديو التالي من شركة embarcadero يعرض بعض الخواص الجديدة الرائعة في Delphi 2010 الخاصة بالشاشات التي تعمل باللمس .

رابط تحميل الفيديو MP4

مشاهدة ممتعة 🙂