ما الهيكس؟

سوف أكون مضطرًا إلى العلم قليلاً من هذا.

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

يدرك واتني أن دوران الكاميرا البالغ 360 درجة سيسمح لفريق ناسا بتوضيح الرسائل له رسالة بحرف إذا كان بإمكانه تزويدهم أبجدية للإشارة إلى كاميرا التحقيق. هذا الحل يمثل مشكلة أخرى ، رغم ذلك. تحتوي الحروف الأبجدية اللاتينية على 26 حرفًا باللغة الإنجليزية ، مما يعني أنه سيكون عليها أن تكون قريبة جدًا من بعضها البعض في دائرة حول المسبار ومن المحتمل جدًا أنه سيواجه صعوبة في تحديد أي من الحروف التي يُقصد من المسبار أن يشير إليها.

"لا يمكن أن يكون الأبجدية لدينا. 26 حرفًا بالإضافة إلى بطاقة سؤال إلى 360 تعطينا 13 درجة من القوس. هذا هو الطريق الضيق للغاية. لم أكن أعرف مطلقًا ماذا تشير الكاميرا إلى ... سداسي عشري إلى الإنقاذ ".

لذا بدلاً من ذلك ، يحل Watney المشكلة عن طريق استخدام نظام سداسي عشري وطاولة ASCII لفك تشفير الرسائل المشفرة من وكالة ناسا ، وقبل أن تعرف أنه قادر على التحدث إلى الأرض في أكثر من مجرد أسئلة نعم / لا.

ائتمانات لفة

…انتظر ماذا؟

أنت تعلم أنك تفعل الرياضيات المعقدة عند بدء استخدام الحروف.

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

أنا أتعلم البرمجة في الوقت الحالي ، وأدركت أنه حتى لو كانت اللغات عالية المستوى مثل روبي أو جافاسكريبت صعبًا لإتقانها ، فهي لا تزال بعيدة جدًا عن رمز الجهاز الأساسي الذي يشغل أجهزة الكمبيوتر التي تعتمد فقط على 1 و 0 . هذا المستوى المتدني من البرمجة كان يخيفني دائمًا ، وربما كان السبب الرئيسي في اهتمامي بعلوم الكمبيوتر كمجال وظيفي منذ نصف عمر ، قبل أن تصبح البرمجة مهنة يمكن الوصول إليها بسهولة أكبر. لكن منذ أن بدأت السير في طريقي إلى أن أصبح مطورًا منذ 6 أسابيع ، تعلمت أنه يمكنك تقسيم أي عمل / مفهوم معقد إلى حجم يمكن التحكم فيه إذا تخطيت ذلك قطعة قطعة.

لذلك دعونا نبدأ بالكلمة السداسية عشرية. مشتق من الكلمة اليونانية سداسي عشري ، 6 ، وعشري ، وهي مشتقة من العلامة العشرية اللاتينية ، والتي تعني العاشرة. السداسي العشري هو نظام رقمي يستخدم 16 كقاعدة له ، بدلاً من 10 كما هو الحال مع الكسور العشرية "الطبيعية".

الآن إذا أردت أن تشرح نظام أرقام base10 لشخص لم يسبق لك القيام بحساب من قبل ، فعليك أولاً أن تشرح لماذا كان من المفيد حتى استخدام نظام رقمي في المقام الأول. بعد كل شيء ، يمكننا بسهولة استخدام شرطة مائلة بسيطة ("\") للإشارة إلى كميات من الكائنات. على سبيل المثال ، قد يتم تمثيل سمكة واحدة كـ \ fish ، وسمكتين كـ \\ fish ، وثلاثة أسماك كـ \\\ fish ، وهكذا. من الناحية النظرية ، يمكنك تمثيل أي كمية من الأسماك باستخدام حرف واحد فقط. ولكن في الممارسة العملية ، يصبح هذا الأمر غير قابل للإدارة بمجرد دخولك إلى كميات كبيرة من الأسماك. حتى خمسون سمكة تصبح سلسلة مائلة طويلة بشكل غير قانوني.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ سمك
لا تملك Fish نطاق الذاكرة قصير المدى لتصور هذا العدد الكبير ، ولا يمكنك ذلك أيضًا.

باستخدام نظام عشري base10 ، يمكننا بسهولة تمثيل كمية من الأسماك تزيد بمقدار 1000 مرة عن الخط المائل أعلاه باستخدام عُشر عدد الأسماك. سيتعين علينا استخدام عدد قليل من الرموز أكثر من الخط المائل البسيط ، لكن المفاضلة في الكفاءة تستحق العناء. في الواقع ، إنها فعالة للغاية ، حيث أننا لا نحتاج سوى إلى مزيج من اثنين من هذه الرموز لتمثيل تلك الأسماك الخمسين أعلاه.

الأرقام في نظام base10 هي:

0 1 2 3 4 5 6 7 8 9

أين

0 =
1 = \
2 = \\
3 = \\\
4 = \\\\
5 = \\\\\
6 = \ \ \ \ \
7 = \\\\\ \\
8 = \\\\\ \\\
9 = \\\\\ \\\\

لذلك يمكن كتابة الأسماك بـ 4 أسماك بدلاً من ذلك ، مع تناول جزء صغير من المساحة. بمجرد أن نصل إلى كمية أكبر من 9 ، نحتاج إلى البدء من جديد بالرقم 1 وإضافة رقم نائب ، 0.

10 = \\\\\ \\\\\

الآن ، لتمثيل كمية أكبر من 10 ، مثل 4 أكبر من 10 ، نجمع فقط الرقمين 10 و 4 لجعل 14

10 = \\\\\ \\\\\
4 = \\\\
14 = \\\\\ \\\\\ \\\\

بمجرد أن نصل إلى 9 مرة أخرى ، نكرر ونزيد الرقم الأول برقم واحد.

...
17
18
19
20
21
...

يمكننا اتباع هذا النمط على طول الطريق حتى 99 ، حيث يمكننا أن نبدأ النموذج مرة أخرى برقم 10 و 0: 100. لذا ، في النظام العشري القائم على 10 ، كل صفر إضافي يضاف إلى اليمين يجعل الرقم 10 أضعاف من السابق.

10 * 1 = 10
10 * 10 = 100
10 * 100 = 1000
10 * 1000 = 10000
...

فلماذا base16؟

من الواضح أن النظام الذي يستخدم عشرة أرقام يكون له معنى كبير إذا كنت تستخدم رقمًا واحدًا طوال حياتك ، ومن البديهي للغاية أننا جميعًا مولودين بمجموعتين من خمسة أصابع يمكن الاعتماد عليها (تعني كلمة digitus باللاتينية "إصبع" ، بعد كل شيء) ، ولذا فقد اعتدنا على النظر في مضاعفات عشرة في مجموعات من خمسة.

عندما يتعلق الأمر بالبيانات المخزنة على أجهزة الكمبيوتر ، فإن مضاعفات 5 ليست مفيدة تقريبًا. في الأساس ، يمكن أن توجد دارة كمبيوتر في واحدة من حالتين: متوقفة أو تعمل ، وبالتالي فإن كل كود الكمبيوتر يكون ثنائيًا بشكل أساسي (lat. binarius "تتكون من حالتين"). أصغر مجموعة من البيانات الممكنة في نظام ثنائي هي قليلا (رقم ثنائي) ، والتي يمكن تنظيمها في مجموعة من 8 تسمى بايت. نظرًا لأن البتة الواحدة يمكن أن تحتوي على قيمتين محتملتين (0 أو 1) ، يمكن للبايت تخزين 16 حالة ممكنة.

0 أو 1 (2)
0 أو 1 (4)
0 أو 1 (6)
0 أو 1 (8)
0 أو 1 (10)
0 أو 1 (12)
0 أو 1 (14)
0 أو 1 (16)

مع وجود كل حالة من هذه البتات الثماني تحتوي على حالتين محتملتين ، يوجد ما مجموعه 256 (2⁸) مجموعات ممكنة يمكن تخزينها في بايت واحد.

https://cs.stackexchange.com/questions/19568/how-can-one-byte-hold-256-possibilities

إذا كنت تريد تعيين هذه القيم المحتملة البالغ عددها 256 إلى نظام عشري ، فستحتاج إلى ثلاثة أرقام.

ثنائي عشري
00000000 000
00000001 001
00000010 002
00000011 003
....
01100011 009
....
11111111 255

إنه أمر ممكن ، ولكن كما هو الحال مع مثال عد الأسماك بعلامات القطع ، فإنه ليس النظام الأكثر كفاءة إذا كانت وحدتنا الأساسية بايت واحد. باستخدام نظام عشري base16 ، يمكننا تمثيل أي مجموعة بتات ممكنة من بايت واحد باستخدام رقمين سداسي عشري فقط. سيتعين علينا استخدام عدد قليل من الرموز أكثر من النظام العشري ، ولكن لأغراض الكفاءة والقابلية للتوسعة وقراءة الإنسان ، يستحق الأمر ذلك.

الأرقام السداسية عشرية هي:

0 1 2 3 4 5 6 7 8 9 A B C D E F

أين

ديسمبر عرافة
 0 = 0
 1 = 1
 2 = 2
 3 = 3
 4 = 4
 5 = 5
 6 = 6
 7 = 7
 8 = 8
 9 = 9
10 = أ
11 = ب
12 = ج
13 = د
14 = هـ
15 = واو

لذا ، يمكن كتابة الرقم 10 في العلامة العشرية على شكل حرف "A" في عشري ، مما يوفر مساحة أرقام. بمجرد أن نصل إلى كمية أكبر من hex F (15 ديسمبر) ، نحتاج إلى البدء من جديد برقم 1 ورقم نائب ، 0.

ديسمبر عرافة
16 = 10

الآن ، لتمثيل كمية أكبر من 16 ، مثل 4 أكبر من 16 (20 بالأرقام العشرية) ، فإننا نجمع رقمين سداسي عشرية 10 و 4 فقط لتصنع ست عشرية.

ديسمبر عرافة
16 = 10
 4 = 4
ديسمبر عرافة
20 = 14

بمجرد وصولنا إلى hex 1F (31 بالعدد العشري) ، نكرر ونزيد الرقم الأول برقم واحد.

ديسمبر عرافة
...
 28 = 1D
 29 = 1E
 31 = 1F
 32 = 20
 33 = 21
 34 = 22
...

يمكننا اتباع هذا النمط وصولًا إلى hex FF ، حيث يمكننا أن نبدأ النموذج مرة أخرى بـ 10 و 0 إضافي: hex 100 (256 في عشري). كل صفر إضافي يضاف إلى اليمين يجعل الرقم 16 مرة أكبر من الرقم السابق.

عرافة ديسمبر
10 * 1 = 10 16 * 1 = 16
10 * 10 = 100 16 * 16 = 256
10 * 100 = 1000 16 * 256 = 4096
10 * 1000 = 10000 16 * 4096 = 65536
10 * 1000 + 1 = 10001 16 * 4096 + 1 = 65536
...

#bringhimhome

إذاً مرة أخرى على كوكب المريخ - باستخدام السداسي عشرية بدلاً من حروف الأبجدية ، فإن شخصية Matt Damon قادرة على خفض عدد الأرقام التي يمكن أن يحصل عليها من الأرض بمقدار 10 ، والتعرف بسهولة على موضع الكاميرا.

يتضمن هذا المخطط أيضًا الثمانينات.

يتم اشتقاق الكود الذي ترسله ناسا من جدول ASCII (يسار) ، حيث تعين كل قيمة ست عشرية (باللون الأحمر) بين 0 و 7 F (0-127 بالتدوين العشري) إلى حرف واحد. لفك تشفير الرسالة ، كل ما على Watney فعله هو مطابقة قيم ست عشرية بأحرف الأبجدية في الجدول.

48 4F 57 41 4C 49 56 45
H O W A L I V E

وهو أمر أساسي يقوم به كل جهاز كمبيوتر عندما يقوم بقراءة البيانات وإخراجها.

كمكافأة إضافية ، مع كل المساحة التي توفرها 7 بتات فقط ، يشتمل جدول ASCII أيضًا على علامات الترقيم (!) ، حتى تتمكن ناسا من نقل سطور من التعليمات البرمجية التي تسمح لـ Watney بتوصيل مرسل باثفايندر ببرنامج الاتصالات الأكثر قوة في مارس روفر . السداسية إلى الإنقاذ.

تم تطوير جدول ASCII (الرمز القياسي الأمريكي لتبادل المعلومات) الأصلي في الولايات المتحدة في الستينيات ، وكان في الأصل يتطلب 7 بت فقط للتخزين. يستخدم معظم تشفير النص الحديث 8 بت ولكنه يعتمد على الإطار الأصلي ، وبالتالي فإن النظام لا يزال قيد الاستخدام حتى يومنا هذا. حتى إذا لم تكن مبرمجًا ، فلا شك أنك قد رأيت السداسي عشرية المستخدمة في متصفح الويب الخاص بك في عنوان url مثل: http://www.example.com/this٪20is٪20an٪20example

حيث يقوم٪ 20 (hex 20) بالتعيين إلى الحرف [space] في مخطط ASCII ، حيث لا يمكن أن تقبل عناوين url مسافات فارغة وأحرفًا أخرى.

هناك مكان آخر ستشاهد فيه ست عشري من قبل هو اختيار الألوان في أي برنامج يسمح بتخصيص ألوان قيم RGB.

أيام رأ جيدة.

يرمز RGB إلى الألوان الأساسية: الأحمر والأزرق والأخضر. في الأيام الأولى للحوسبة ، يمكن أن تخزن ثلاث بتات (0 أو 1) قيمة واحدة من مجموعات الألوان الممكنة 8 (3 ²) ، حيث ينشئ 000 لون أسود (بدون لون) ، 111 يعطيك اللون الأبيض (جميع الألوان مجتمعة) ، و ستة ألوان أخرى تنتج عن التوليفات بينهما.

حقيقة أن اللون هو مجرد اختلافات في الطول الموجي في الضوء هو نشر مدونة ليوم آخر.

عن طريق زيادة عمق البت إلى 8 بايت (24 بت) ، يمكن لكل قيمة ألوان R أو G أو B تخزين 256 مستوىًا ممكنًا في بايت واحد ، مما يسمح بـ 16،777،216 (2²) من الألوان الممكنة. يضيف ما يصل إلى ثمانية أرقام بلا معنى في العلامة العشرية 10 ، ولكن يمكن وصف كل واحد من مجموعات الألوان الستة عشر التي يزيد عددها على مليون بتنسيق يمكن قراءته بواسطة الإنسان باستخدام 3 أزواج فقط من الأرقام السداسية عشرية:
أسود = # 00000
أحمر = # FF0000
أزرق = # 00FF00
الأخضر = # 0000FF
أبيض = # FFFFF

من المعتاد اختصار الرقم عند تكرار رقمين ، لذلك يمكن أيضًا كتابة قيمة سداسي عشرية لـ # FFCC00 باللون الأصفر الغامق على أنها # FC0.

هذا 16،763،904 في العشري 10 ، للمقارنة.

نأمل أن يكون هذا المنشور قد ألغى الغموض على سداسي عشري لك ؛ أعلم أن إجراء المزيد من البحث حول هذا الموضوع جعل علوم الكمبيوتر تبدو أقل إثارة للإعجاب بالنسبة لي ، وكل ذلك مستوحى من جائزة 2015 لأفضل كوميدي و / أو موسيقي.