تنسيق أعداد الحاسب هو تمثيل القيم العددية داخل معدات و برمجيات الحاسوب و الآلة حاسبة .[1] عادة، يتم تخزين القم العددية كمجموعات من البتات، سُميت بذلك نسبة إلى على عدد الوحدات التي تتألف منها. تم اختيار الترميز بين القيم العددية و سلسلة البتات ليتلاءم مع عمليات الحاسب ؛ تنسيق البتات المُستخدم في مجموعة تعليمات جهاز الكمبيوتر يتطلب التحويل عمومًا للاستخدام الخارجي مثل الطباعة و العرض. الأنواع المختلفة من المعالجات قد تمتلك تمثيلات داخلية مختلفة للقيم العددية. اتفاقيات مختلفة يتم استخدامها للأعداد الصحيحة و الحقيقية. معظم الحسابات يتم إجراؤها بتنسيق الأعداد بطريقة تتناسب مع سجل المعالج، ولكن بعض الأنظمة البرمجية تسمح بتمثيل أعداد كبيرة و عشوائية باستخدام عدة كلمات من الذاكرة.
التمثيل الثنائي للأعداد
أجهزة الكمبيوتر تمثل البيانات كمجموعات من الأرقام الثنائية. يتكون التمثيل من بتات، والتي بدورها يتم تجميعها في مجموعات أكبر مثل بايت.
سلسلة ثنائي | ثماني القيمة |
---|---|
000 | 0 |
001 | 1 |
010 | 2 |
011 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
طول Bit String (ب) | عدد القيم الممكنة (N) |
---|---|
1 | 2 |
2 | 4 |
3 | 8 |
4 | 16 |
5 | 32 |
6 | 64 |
7 | 128 |
8 | 256 |
9 | 512 |
10 | 1024 |
... | |
البت هو ثنائي الرقم الذي يمثل واحد من اثنين من الأوضاع. يُمكن استيعاب مفهوم البت على أنها قيمة إما 1 أو 0, مفتوح أو مغلق, نعم أو لا, صح أو خطأ أو الترميز عن طريق المفتاح الكهربائي أو مقلاد نوعًا ما.
في حين أن البت الواحد، من تلقاء نفسه، غير قادرة على تمثل سوى اثنين من قيم سلسلة البتات، يمكن أن تستخدم لتمثيل أكبر القيم. على سبيل المثال سلسلة من ثلاثة بتات يمكن أن تمثل ما يصل إلى ثمانية قيم مختلفة كما هو موضح في الجدول 1.
كلما زاد عدد البتات التي تكون السلسلة، زاد عدد التوزيعات الممكنة ل 0 و 1 بعلاقة أسية. البت الواحد يسمح بتمثيل توزيعتين فقط من القيم و 2 من البتات تسمح بتمثيل 4 توزيعات من القيم و هكذا. عدد التوزيعات الممكنة يتضاعف لكل خانة من البتات يتم إضافتها، كما هو موضح في الجدول 2.
التجميع بعدد محدد من البتات يُستخدم لتمثيل أشياء مختلفة و لها أسماء محددة.
البايت هو سلسلة من البتات تتكون من العدد المطلوب من البتات لتمثيل رمز .على معظم أجهزة الكمبيوتر الحديثة، هو سلسلة من ثمانية بتات. لأن تعريف البايت يتعلق بعدد البتات التي تكون الرمز، بعض أجهزة الكمبيوتر القديمة قد استخدمت طول مختلف للبايت الخاص بها.[2] في العديد من معماريات الحاسوب ، يُستخدم البايت لعنونة مناطق محددة من الذاكرة. على سبيل المثال، على الرغم من أن معالجات 64 بت تقوم بعنونة الذاكرة 64 بت في وقت واحد، قد لا يزال تقسيم هذه الذاكرة إلى قطع من ثمانية بتات. وهذا ما يسمى بعنونة الذاكرة بالبايتات. تاريخيا العديد من وحدات المعالجة المركزية تقرأ البيانات في بعض مضاعفات ثمانية بت.[3] لأن البايت ذو حجم ثمانية بت شائع جدا، ولكن التعريف غير موحد، مصطلح الثماني يستخدم أحيانا بشكل تصريحي لوصف سلسلة من 8 بتات.
النايبل (في بعض الأحيان nybble) هو عدد يتألف من أربعة بتات.[4] كونه نصف بايت, فإن اسمه عبارة عن تلاعب لاكلمات. قد يحتاج الشخص إلى عدد من النايبل لتكوين بايت واحد من الشيء ؛ وبالمثل، النايبل هو جزء من بايت. لأن أربعة بت تسمح بتكوين ستة عشر قيمة، النايبل يُعرف أحيانًا باسم ست عشري.[5]
عرض الأعداد الثمانية و الست عشرية
النظام الثماني و الست عشري وسائل مريحة لتمثيل الأرقام الثنائية، تُستخدم من قبل أجهزة الكمبيوتر. غالبًا ما يحتاج مهندسو الحاسب لكتابة كميات بنظام العد الثنائي، ولكن في الممارسة كتابة رقم ثنائي مثل 1001001101010001 مملة و أكثر عرضة للأخطاء. ولذلك كتابة كميات نظام العد الثنائي ككميات مكتوبة في قاعدة 8 أو "ثماني" ، أو، أكثر شيوعا، قاعدة-16, " ست عشري" لصياغة الأرقام. في النظام العشري، هناك 10 أرقام من 0 إلى 9 ، يت تجميعها لتشكيل رقم. في النظام الثماني، هناك فقط 8 أرقام من 0 إلى 7. أي أن قيمة ثماني "10" هو نفس عشري "8" ثماني "20" عشري "16". في النظام الست عشري، وهناك 16 من الأرقام من 0 إلى 9 يتبعها، بالاتفاق، من A لF ، لذلك، ست عشري ال "10" هو نفس عشري "16" ست عشري "20" هو نفس عشري "32". موضح في الرسم البياني أدناه مثال ومقارنة بين الأرقام في الأنظمة المختلفة.
عند كتابة أرقام، رموز متناسقة تُستخدم لوصف أعداد النظام، على سبيل المثال 000_0000B أو 0b000_00000 الثنائية و 0F8H أو 0xf8 عن أرقام ست عشرية.
التحويل بين أنظمة الأعداد
القيمة العشرية | ثنائي القيمة | ثماني القيمة | قيمة ست عشرية |
---|---|---|---|
0 | 000000 | 00 | 00 |
1 | 000001 | 01 | 01 |
2 | 000010 | 02 | 02 |
3 | 000011 | 03 | 03 |
4 | 000100 | 04 | 04 |
5 | 000101 | 05 | 05 |
6 | 000110 | 06 | 06 |
7 | 000111 | 07 | 07 |
8 | 001000 | 10 | 08 |
9 | 001001 | 11 | 09 |
10 | 001010 | 12 | 0A |
11 | 001011 | 13 | 0B |
12 | 001100 | 14 | 0C |
13 | 001101 | 15 | 0D |
14 | 001110 | 16 | 0E |
15 | 001111 | 17 | 0F |
كل من هذه الأنظمة العددية هو نظام موضعي، ولكن في حين أن وزن النظام العشري هو قوى من 10 النظام الثماني قوى 8 الست عشري قوى 16. لتحويل من الست عشري أو الثماني إلى العشري، يتم ضرب قيمة كل خانة بقيمة موضعها ثم يتم جمع النتائج. على سبيل المثال:
تمثيل الكسور في النظام الثنائي
أعداد ثابتة الفاصلة
تنسيق الأعداد ثابتة الفاصلة يمكن أن يكون مفيدًا لتمثيل الكسور في النظام الثنائي.
عدد البتات اللازمة للوصول للدقة والمدى المطلوب يجب أن يتم اختياره لتخزين الأجزاء الكسرية و الصحيحة للعدد. على سبيل المثال باستخدام تنسيق 32 بت يمكن استخدام 16 بت للجزء الصحيح و 16 للجزء العشري.
الثمانية بتات تتبعها 4 بتات، ثم اثنين بت، ثم واحد بت. وتستمر البتات الكسرية في النمط الذي تحدده البتات الصحيحة. البت التالي هو نصف بت، ثم ربع بت، ثم ⅛ بت. على سبيل المثال:
بت عدد صحيح | كسور بت | ||||
0.500 | = | 1⁄2 | = | 00000000 00000000.10000000 00000000 | |
1.250 | = | 11⁄4 | = | 00000000 00000001.01000000 00000000 | |
7.375 | = | 73⁄8 | = | 00000000 00000111.01100000 00000000 |
هذا النوع من الترميز لا يمكن أن يمثل بعض القيم في النظام الثنائي. على سبيل المثال، الكسر ، 0.2 في العشري، أقرب تقريب له سيكون على النحو التالي:
13107 / 65536 | = | 00000000 00000000.00110011 00110011 | = | 0.1999969 في العشرية... |
13108 / 65536 | = | 00000000 00000000.00110011 00110100 | = | 0.2000122 في العشرية... |
حتى إذا استخدنا خانات أكثر، التمثيل الدقيق مستحيل. العدد يُكتب في العشرية 0.333333333..., يستمر إلى إلى أجل غير مسمى. لو توقف قبل أجله، فإن القيمة لن تمثل بدقة.
أعداد الفاصلة العائمة أو النقطة العائمة
في حين أن كلا من الأعداد بإشارة و بدون إشارة تُستخدم في أنظمة الأعداد، حتى عدد صحيح من 32-بت لا يكفي للتعامل مع كل مجموعات الأرقام التي يمكن للآلة الحاسبة التعامل معها، وهذا ليس فقط الكسور. لتقريب مجموعة أكبر و أكثر دقة من الأرقام الحقيقية, يجب أن نتخلى عن نظام الأعداد الصحيحة بدون إشارة ونظام النقطة ثابتة الأرقام، و ننتقل إلى تنسيق "النقطة العائمة".
في النظام العشري، نحن على دراية بأرقام الفاصلة العائمة غلى صورة (الكتابة العلمية):
- 1.1030402 × 105 = 1.1030402 × 100000 = 110304.02
أو بشكل مضغوط أكثر:
- 1.1030402E5
وهو ما يعني العدد واحد "1.1030402 مرة تليها 5 أصفار". لدينا بعض القيمة الرقمية (1.1030402) المعروفة باسم "معامل"،مضروبا بقوة من 10 (E5, يعني 105 أو 100 ، 000) ، والمعروفة باسم "الأس". إذا كان لدينا أس سالب، فهذا يعني أن الرقم مضروب في 1 إلى عدة أماكن على يمين النقطة العشرية. على سبيل المثال:
- 2.3434 E-6 = 2.3434 × 10-6 = 2.3434 × 0.000001 = 0.0000023434
ميزة هذا النظام هو أنه باستخدام الأس يمكننا الحصول على مجموعة أوسع بكثير من الأرقام، حتى لو كان عدد المعاملات كبير جدًا، أو "دقة الرقم" أصغر بكثير من النطاق. تنسيقات مماثلة للفاصلة العائمة الثنائية يمكن استخدامها لتعريف أجهزة الكمبيوتر. هناك عدد من هذه المخططات الأكثر شعبية تم تحديدها من قبل معهد مهندسي الكهرباء والإلكترونيات (IEEE). في IEEE 754-2008 ، تم تحديد المواصفات القياسية ك 64 بت لتنسيق الفاصلة العائمة:
- 11-بت ثنائي للأس باستخدام تنسيق "فائض-1023" . فائض-1023 يعني أن الأس يظهر كعدد ثنائي صحيح من غير إشارة من 0 إلى 2047; طرح 1023 يعطي القيمة الفعلية بإشارتها.
- 52-بت للمعاملات، أيضا عدد ثنائي صحيح من غير إشارة، يقوم بتحديد قيمة كسور مع 1 زائدة ضمنية.
- 1 بت للعلامة، لإعطاء علامة للعدد.
دعونا نرى كيف يبدو هذا التنسيق من خلال إظهار كيف يتم تخزين هذا العدد في 8 بايت من الذاكرة:
البايت 0: | S | x10 | x9 | x8 | x7 | x6 | x5 | x4 |
1 بايت: | x3 | x2 | x1 | x0 | m51 | m50 | m49 | m48 |
2 بايت: | وm47 | m46 | m45 | m44 | m43 | m42 | m41 | m40 |
بايت 3: | m39 | m38 | m37 | m36 | m35 | m34 | m33 | m32 |
بايت 4: | m31 | m30 | m29 | m28 | m27 | m26 | m25 | m24 |
بايت 5: | m23 | m22 | m21 | m20 | m19 | m18 | m17 | m16 |
بايت 6: | m15 | m14 | m13 | m12 | m11 | m10 | m9 | m8 |
بايت 7: | m7 | m6 | m5 | m4 | m3 | m2 | m1 | m0 |
حيث "S" يدل على البت المخصص للإشارة، "x" يدل على الأس، و "m" يدل على البتات التي تمثل المعاملات.عندما يتم استخراج البتات، يتم تحويلها بهذه الحسابات:
- <علامة> × (1 + <معاملات>) × 2<الأس> - 1023
هذا المخطط يوفر أرقام صحيحة إلى حوالي 15 من الأرقام العشرية التالية، بمجموعة مدى الأرقام التالية:
الحد لأقصى | الحد الأدنى | |
---|---|---|
موجب | 1.797693134862231 E+308 | 4.940656458412465 E-324 |
سالب | -4.940656458412465 E-324 | -1.797693134862231 E+308 |
هذه المواصفات تحدد أيضا عدد من القيم الخاصة الغير معرفة، و هي شائغة باسم NaNs ، "ليس عددا". وتستخدم هذه القيم في البرامج لتعيين العمليات الغير صالحة و مثل ذلك.
بعض البرامج أيضا تستخدم نظام 32 بت لأعداد الفاصلة العائمة. النظام الأكثر شيوعا يستخدم 23 بت للمعامل مع بت واحد للعلامة، إضافة إلى 8 بتات للأس في تنسيق "الفائض-127" . مُعطى 7 خانات عشرية صحيحة.
البايت 0: | S | x7 | x6 | x5 | x4 | x3 | x2 | x1 |
1 بايت: | x0 | m22 | m21 | m20 | m19 | m18 | m17 | m16 |
2 بايت: | m15 | m14 | m13 | m12 | m11 | m10 | m9 | m8 |
بايت 3: | m7 | m6 | m5 | m4 | m3 | m2 | m1 | m0 |
يت تحويل البتات إلى قيمة عددية بهذه الحسابات:
- <علامة> × (1 + <كسور معاملها>) × 2<الأس> - 127
مما يؤدي إلى المدى التالي من الأرقام:
الحد الأقصى | الحد الأدنى | |
---|---|---|
موجب | 3.402823 E+38 | 2.802597 E-45 |
سالب | -2.802597 E-45 | -3.402823 E+38 |
أرقام الفاصلة العائمة معروفة باسم "حقيقية" أو "عائمة" بشكل عام، ولكن مع وجود عدد من الاختلافات:
أرقام الفاصلة العائمة 32 بت تُسمى أحيانا "حقيقية 32" أو "أحادي" بمعنى "قيمة أحادية الدقة و بنقطة عائمة".
رقام الفاصلة العائمة 64 بت تُسمى أحيانا "حقيقية 64" أو "مزدوجة" ، بمعنى "قيمة مزدوجة الدقة و بنقطة عائمة".
يتم اختيار العلاقة بين الأرقام و أنماط البتات من أجل ملاءمة معالجة الحاسب ؛ ثمانية بايت مخزنة في ذاكرة الكمبيوتر قد تمثل ب64 بت الحقيقي، أو باثنين 32 بت الحقيقي، أو أربعة من الأعداد الصحيحة بإشارة أو بغير إشارة، أو أي نوع آخر من البيانات التي تناسبها في ثمانية بايت. الفرق الوحيد هو كيف يفسر الكمبيوتر هذه الأنظمة. إذا خزن الكمبيوتر أربعة من الأعداد الصحيحة بغير إشارة ومن ثم قرأها مرة أخرى من الذاكرة ك64-بت الحقيقي، فسينتج عدد صالح تمامًا بشكل دائم تقريبًا، على الرغم من أنه سيكون من البيانات غير المرغوب فيها (غير صحيح).
فقط مجموعة محدودة من الأرقام الحقيقية يمكن أن تكون ممثلة مع عدد معين من البتات. العمليات الحسابية يمكن أن تنزل عن الحد الأدنى أو تتجاوز الحد الأقصى، مما ينتج عنه قيمة كبيرة جدا أو صغيرة جدا لتمثيلها.
التمثيل محدود الدقة. على سبيل المثال, 15 خانة عشرية فقط يمكن أن تكون ممثلة مع 64 بت الحقيقي. إذا تمت إضافة عدد صغير جدا من تنسيق النقطة العائمة إلى كبير، النتيجة هي مجرد العدد الكبير. العدد الصغير كان صغيرًا جدًا لدرجة أنه لا يظهر في 15 أو 16 التنسيق، فيتجاهل الحاسب ذلك بشكل فعال. تحليل تأثير محدودية الدقة هو مشكلة مدروسة جيدًا. تقديرات حجم أخطاء التقريب و وضع أساليب للحد من تأثيرها على الحسابات الكبيرة هو جزء من أي مشروع حسابي كبير. محدودية الدقة تختلف عن محدودية المجال، لأنها تؤثر على المعامل، وليس الأس.
المعامل هو كسر في النظام الثنائي و الذي ليس بالضرورة أن يتوافق تمامًا مع الكسر العشري. في كثير من الحالات، لا يتطابق مجموع القوى ل2 مع الكسر العشري المحدد، ونتائج العمليات الحسابية سيكون منزاحًا قليلًا. على سبيل المثال، الكسر العشري "0.1" يعادل تكرار لا نهائي للكسر الثنائي: 0.000110011 ...[6]
الأرقام في لغات البرمجة
البرمجة في لغة التجميع تتطلب من المبرمج تتبع تمثيل الأرقام. حيث أن المعالج لا يدعم العملية الرياضية المطلوبة، يجب على المبرمج عمل خوارزمية مناسبة و سلسلة تعليمات لتنفيذ العملية; في بعض المعالجات الدقيقة، حتى ضرب الأعداد الصحيحة يجب القيام به برمجيًا.
لغات البرمجة عالية المستوى مثل LISP و بايثون توفر الأعداد المجردة، التي قد تكون أنواع موسعة مثل: الأعداد النسبية, الأعداد الكبيرة جدًا، الأعداد المركبة. يتم تنفيذ العمليات الرياضية من خلال إجراءات المكتبات المقدمة من خلال تنفيذ اللغة. الرمز الرياضي مُعطى في شفرة المصدر، فيتم استدعاء أجزاء برمجية مختلفة بحيث تناسب نوع التمثيل العددي من قبل مشغل الحمولة الزائدة، ؛ العمليات الحسابية على أي عدد— سواءً كان بإشارة، بغير إشارة، نسبي، بفاصلة عائمة، بفاصلة ثابتة، صحيح، مركب — كلها مكتوبة بنفس الطريقة.
بعض اللغات مثل REXX و جافا ، وتوفير عمليات لأنظمة الأعداد بفاصلة عشرية عائمة، و التي توفر أخطاء التقريب بشكل مختلف.
مقالات ذات صلة
الملاحظات والمراجع
- Jon Stokes (2007). Inside the machine: an illustrated introduction to microprocessors and computer architecture. No Starch Press. صفحة 66. . مؤرشف من الأصل في 04 مارس 2020.
- "byte definition". مؤرشف من الأصل في 14 أغسطس 201824 أبريل 2012.
- "Microprocessor and CPU (Central Processing Unit)". Network Dictionary. مؤرشف من الأصل في 3 أكتوبر 201701 مايو 2012.
- "nybble definition". مؤرشف من الأصل في 11 أكتوبر 201603 مايو 2012.
- "Nybble". TechTerms.com. مؤرشف من الأصل في 13 مارس 201903 مايو 2012.
- Goebel, Greg. "Computer Numbering Format". مؤرشف من الأصل في 25 يوليو 201810 سبتمبر 2012.