سؤال

لا أعرف جيدًا عن RAM و HDD Architecture ، أو كيف تتعامل الإلكترونيات مع أجزاء من الذاكرة ، لكن هذا أثار دائمًا فضولي: لماذا اخترنا التوقف عند 8 بتات لأصغر عنصر في قيمة الكمبيوتر؟

قد يبدو سؤالي غبيًا للغاية ، لأن الإجابة واضحة ، لكنني لست متأكدًا جدًا ...

هل لأن 2^3 يسمح لها بالتناسب تمامًا عند معالجة الذاكرة؟ هل الإلكترونيات مصممة خصيصًا لتخزين جزء من 8 بت؟ إذا كانت الإجابة بنعم ، فلماذا لا تستخدم كلمات أوسع؟ إنه لأنه يقسم 32 و 64 و 128 ، بحيث يمكن إعطاء كلمات المعالج العديد من هذه الكلمات؟ هل من المريح أن يكون لديك 256 قيمة لمثل هذه المساحة الصغيرة؟

ما رأيك ؟

سؤالي ميتافيزيقي قليلاً ، لكنني أريد أن أتأكد من أنه مجرد سبب تاريخي وليس سببًا تكنولوجيًا أو رياضيًا.

بالنسبة إلى الحكاية ، كنت أفكر أيضًا في معيار ASCII ، حيث تكون معظم الشخصيات الأولى عديمة الفائدة مع أشياء مثل UTF-8 ، وأحاول أيضًا التفكير في ترميز أحرف أصغر وأسرع ...

هل كانت مفيدة؟

المحلول

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

في الواقع ، متى بايت تم صياغته تم تعريفه على أنه وحدة 1-6 بت. تشمل أحجام البايت المستخدمة عبر التاريخ 7 و 9 و 36 والآلات ذات البايتات المتغيرة الحجم.

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

إن معيار ASCII الذي ذكرته يفترض بايت 7 بت ، وكان يعتمد على معايير الاتصالات السابقة 6 بت.


تحرير: قد يكون من المفيد الإضافة إلى هذا ، لأن البعض يصر على أن أولئك الذين يقولون البايتات دائمًا ما تكون ثمارات ، وهم مربكين بالكلمات.

و ثماني هو اسم مُعطى لوحدة مكونة من 8 بت (من اللاتينية لمدة ثمانية). إذا كنت تستخدم جهاز كمبيوتر (أو على مستوى تجريد أعلى ، لغة برمجة) حيث تكون البايت 8 بت ، فمن السهل القيام بذلك ، وإلا فأنت بحاجة إلى بعض رمز التحويل (أو تغطيته في الأجهزة). مفهوم ثماني يأتي أكثر في معايير الشبكات أكثر من الحوسبة المحلية ، لأنه في كونه محايدًا للهندسة المعمارية ، فإنه يسمح بإنشاء معايير يمكن استخدامها في التواصل بين الآلات ذات أحجام بايت مختلفة ، وبالتالي استخدامها في معايير IETF و ISO (بالمناسبة ، ISO/ يستخدم IEC 10646 ثماني حيث يستخدم معيار Unicode بايت لما هو أساسا - مع بعض القيود الإضافية الطفيفة على الجزء الأخير - نفس المعيار ، على الرغم من أن معيار Unicod ثماني بواسطة بايت على الرغم من أن البايتات قد تكون أحجام مختلفة على الأجهزة المختلفة). مفهوم ثماني يوجد على وجه التحديد لأن البايتات 8 بت شائعة (وبالتالي اختيار استخدامها كأساس لهذه المعايير) ولكن ليس عالميًا (وبالتالي الحاجة إلى كلمة أخرى لتجنب الغموض).

تاريخياً ، كان البايت هو الحجم المستخدم لتخزين شخصية ، وهي مسألة تعتمد بدورها على الممارسات والمعايير والمعايير التي تقل عن الواقع والتي تستخدمها أجهزة الكمبيوتر قبل تاريخها للتيس تعرف أي شيء سابق ، لكنني منفتح على التصحيحات).

وينعكس هذا من خلال حقيقة أنه في C و C ++ تسمى الوحدة لتخزين بايت char الذي يتم تعريف حجم البتات بواسطة CHAR_BIT في الحدود القياسية. تستخدم الآلات المختلفة 5،6،7،8،9 بت أو أكثر لتحديد الشخصية. في هذه الأيام بالطبع ، نحدد أحرفًا على أنها 21 بت ونستخدم ترميزات مختلفة لتخزينها بوحدات 8 أو 16 أو 32 بت ، (وطرق غير مرخصة من غير مرخصة مثل UTF-7 لأحجام أخرى) ولكن تاريخياً كان ذلك هو الطريقة كان.

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

الكلمة هي الحجم "الطبيعي" لجهاز كمبيوتر معين. هذا أقل تعريفًا بشكل أوضح ، لأنه يؤثر على بعض المخاوف المتداخلة التي من شأنها أن تشارك عمومًا ، ولكنها قد لا تكون كذلك. معظم السجلات على الجهاز ستكون بهذا الحجم ، لكن البعض قد لا يكون كذلك. عادةً ما يكون حجم العنوان أكبر كلمة ، على الرغم من أن هذا قد لا يكون كذلك (كان لدى Z80 بايت 8 بت وكلمة بايت 1 ، ولكنها سمحت ببعض السجلات لتقديم بعض الدعم 16 بت بما في ذلك 16 بت بما في ذلك 16 بت بما في ذلك معالجة).

مرة أخرى نرى هنا فرقًا بين C و C ++ حيث int يتم تعريفه من حيث حجم الكلمات و long يجب أن تكون محددة للاستفادة من المعالج الذي له مفهوم "كلمة طويلة" يجب أن يكون موجودًا ، على الرغم من أنه من المحتمل أن يكون متطابقًا في حالة معينة int. الحد الأدنى والحد الأقصى للقيم هي مرة أخرى في الحدود. (في الواقع ، مع مرور الوقت ، int قد يتم تعريفها على أنها أصغر من حجم الكلمات الطبيعية ، كمزيج من الاتساق مع ما هو شائع في مكان آخر ، وتخفيض استخدام الذاكرة لمجموعة من ints ، وربما لا أعرف الشواغل الأخرى).

لغات Java و .net تتخذ مقاربة التعريف int و long كما تم إصلاحه في جميع الأرشيرات ، وجعل التعامل مع الاختلافات مشكلة بالنسبة لوقت التشغيل (وخاصة الارتعاش) للتعامل معها. على الرغم من ذلك ، حتى في .NET حجم المؤشر (في رمز غير آمن) سيختلف اعتمادًا على الهندسة المعمارية ليكون حجم الكلمة الأساسي ، بدلاً من حجم كلمة فرضها اللغة.

وبالتالي ، فإن Octet و Byte و Word كلها مستقلة جدًا عن بعضها البعض ، على الرغم من علاقة Octet == Byte و Word لعدد كامل من البايتات (ورقم الدور الثنائي بالكامل مثل 2 ، 4 ، 8 إلخ) كونه شائعًا اليوم.

نصائح أخرى

ليس كل البايتات 8 بت. بعضها 7 ، وبعض 9 ، وبعض القيم الأخرى تماما. السبب 8 مهم هو أنه ، في معظم أجهزة الكمبيوتر الحديثة ، هو العدد القياسي من البتات في بايت. كما ذكر Nikola ، قليلا هو أصغر وحدة فعلية (قيمة ثنائية واحدة ، صواب أو خطأ).

كما ذكر ، هذا المقال http://en.wikipedia.org/wiki/byte يصف البايت وتاريخه المتغير في بعض التفاصيل.

المنطق العام وراء سبب أهمية 8 و 256 والأرقام الأخرى هو أنها قوى 2 ، وتشغيل أجهزة الكمبيوتر باستخدام نظام مفاتيح BASE-2 (ثنائي).

تشفير ASCII يتطلب 7 بت ، و EBCDIC يتطلب 8 بت. استخدمت رموز ASCII الممتدة (مثل مجموعات أحرف ANSI) البت الثامن لتوسيع مجموعة الأحرف مع الرسومات والأحرف المعلنة وغيرها من الرموز. استخدمت بعض البنى مع ترميزات الملكية ؛ مثال جيد على ذلك هو DEC PDP-10 ، الذي كان لديه كلمة آلة 36 بت. استخدمت بعض sytems العاملة على هذه البنية الترميزات المعبأة التي تخزين 6 أحرف في كلمة الجهاز لأغراض مختلفة مثل أسماء الملفات.

بحلول السبعينيات من القرن الماضي ، كان نجاح DG Nova و DEC PDP-11 ، والتي كانت عبارة عن بنية مكونة من 16 بت و IBM Mainframes مع 32 بت كلمة آلة دفع الصناعة نحو حرف 8 بتات بشكل افتراضي. تم تطوير المعالجات الدقيقة البالغة 8 بت في أواخر السبعينيات في هذه البيئة ، وأصبح هذا معيارًا فعليًا ، لا سيما على الرغم من أن السفن المحيطية خارج الرف مثل UARTS ورقائق ROM وشرائح FDC تم تصميمها كأجهزة 8 بت.

بحلول الجزء الأخير من سبعينيات القرن الماضي ، استقرت الصناعة على 8 بتات كمعيار بحكم الواقع ، وأصبحت أبنيس مثل PDP-8 مع كلمة ماكينة الآلة التي تبلغ 12 بت إلى حد ما (على الرغم من أن PDP-8 ISA ومشتقات ما زالت تظهر في منتجات Sytem المدمجة ). تلاها 16 و 32 بت من التصميمات الدقيقة مثل عائلات Intel 80x86 و MC68K.

نظرًا لأن أجهزة الكمبيوتر تعمل بأرقام ثنائية ، فإن جميع صلاحيات اثنين مهمة.

أرقام 8bit قادرة على تمثيل 256 (2^8) قيم مميزة ، بما يكفي لجميع أحرف اللغة الإنجليزية وعدد قليل من الأجزاء الإضافية. هذا جعل الأرقام 8 و 256 مهمة للغاية.
حقيقة أن العديد من وحدات المعالجة المركزية (المعتادة إلى وما زالت تفعل) في معالجة البيانات في 8Bit ساعدت كثيرا.

القوى المهمة الأخرى لثنين قد سمعت عنها هي 1024 (2^10 = 1K) و 65536 (2^16 = 65k).

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

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

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

تم وضع ذلك ، لذلك في المستقبل عندما أدركنا أن 8 بايت كانت صغيرة جدًا وأصبحت معقدة لاستخدامنا أضفنا +1 على الطاقة (2 على قوة 4 هي 16) ، ثم مرة أخرى 2^5 هي 32 وما إلى ذلك ، و 256 هو فقط 2 على قوة 8.

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

(2, 4, 8, 16, 32, 64, 128, 256, ، 512 ، 1024 ، وهلم جرا) (2^x, ، x = 1،2،3،4،5،6،7،8،10 وما إلى ذلك)

الرقم المهم هنا ثنائي 0 أو 1. جميع أسئلتك الأخرى مرتبطة بهذا.

كلود شانون و جورج بول هل العمل الأساسي على ما نسميه الآن نظرية المعلومات والحساب المنطقي. باختصار ، هذا هو أساس كيفية التبديل الرقمي ، مع القدرة على التمثيل فقط 0 OFF و 1 ON يمكن أن تمثل معلومات أكثر تعقيدًا ، مثل الأرقام والمنطق وصورة JPG. Binary هو أساس أجهزة الكمبيوتر كما نعرفها حاليًا ، لكن أجهزة الكمبيوتر الأخرى الأساسية أو أجهزة الكمبيوتر التناظرية ممكنة تمامًا.

في الحساب العشري البشري ، قوى العشرة لها أهمية. 10 ، 100 ، 1000 ، 10000 يبدو كل منهما مهمًا ومفيدًا. بمجرد أن يكون لديك جهاز كمبيوتر يعتمد على الثنائي ، هناك صلاحيات 2 ، بالمثل ، التي تصبح مهمة. 2^8 = 256 يكفي لأحرف الأبجدية وعلامات الترقيم والتحكم. (الأهم من ذلك ، 2^7 يكفي لأحرف الأبجدية ، علامات الترقيم والتحكم ، و 2^8 مساحة كافية لتلك الأحرف ASCII و تحقق بت.)

عادةً ما نحسب في القاعدة 10 ، يمكن أن يكون لرقم واحد واحدة من عشر قيم مختلفة. تعتمد تقنية الكمبيوتر على مفاتيح (مجهرية) والتي يمكن أن تكون إما أو إيقافها. إذا كان أحد هذه الأرقام يمثل رقمًا ، فيمكن أن يكون هذا الرقم إما 1 أو 0. هذا هو القاعدة 2.

يتبع من هناك أن أجهزة الكمبيوتر تعمل بأرقام تم بناؤها كسلسلة من رقمين من القيمة.

  • 1 رقم ، 2 قيم
  • 2 رقم ، 4 قيم
  • 3 أرقام ، 8 قيم وما إلى ذلك

عندما يتم تصميم المعالجات ، يتعين عليهم اختيار الحجم الذي سيتم تحسين المعالج للعمل معه. إلى وحدة المعالجة المركزية ، يعتبر هذا "كلمة". استندت وحدات المعالجة المركزية في وقت سابق على أحجام الكلمات من أربعة بايت وبعد فترة وجيزة من 8 بت (1 بايت). اليوم ، تم تصميم وحدات المعالجة المركزية في الغالب للعمل على 32 بت و 64 بت. ولكن في الحقيقة ، فإن "التبديل" للدولة هما السبب في أن جميع أرقام الكمبيوتر تميل إلى أن تكون قوى 2.

أعتقد أن السبب الرئيسي يتعلق بالتصميم الأصلي لجهاز الكمبيوتر IBM. كانت وحدة المعالجة المركزية Intel 8080 السلائف الأولى إلى 8086 الذي سيكون لاحقًا تستخدم في جهاز الكمبيوتر IBM. كان لديها سجلات 8 بت. وبالتالي ، تم تطوير نظام بيئي كامل للتطبيقات حول الاستعارة 8 بت. من أجل الحفاظ على التوافق المتخلف ، صممت Intel جميع البنى اللاحقة للاحتفاظ بسجلات 8 بت. وهكذا ، فإن CPU 8086 وجميع وحدات المعالجة المركزية X86 بعد ذلك أبقى سجلاتها 8 بت للتوافق المتخلف ، على الرغم من أنها أضافت سجلات جديدة 16 بت و 32 بت على مر السنين.

السبب الآخر الذي يمكنني التفكير فيه هو 8 بتات مثالية لتركيب مجموعة الأحرف اللاتينية الأساسية. لا يمكنك وضعه في 4 بت ، ولكن يمكنك في 8. وبالتالي ، يمكنك الحصول على 256 قيمة ASCII Charset. إنها أيضًا أصغر قوة 2 والتي لديك ما يكفي من البتات التي يمكنك مناسبة لها مجموعة أحرف. بالطبع ، في هذه الأيام ، تكون معظم مجموعات الشخصيات بعرض 16 بت في الواقع (أي Unicode).

كتب تشارلز بيتزولد كتابًا مثيرًا للاهتمام يسمى شفرة الذي يغطي هذا السؤال بالضبط. انظر الفصل 15 ، بايت و hex.

ونقلت من هذا الفصل:

ثمانية قيم هي مدخلات إلى الإضافات والمزالج ومحددات البيانات ، وكذلك الإخراج من هذه الوحدات. يتم تعريف قيم ثمانية بت أيضًا بواسطة المفاتيح وعرضها بواسطة مصابيح مصباح ، وبالتالي يقال إن مسار البيانات في هذه الدوائر 8 بت واسعة. ولكن لماذا 8 بت؟ لماذا لا 6 أو 7 أو 9 أو 10؟

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

... لفترة من الوقت ، كان البايت يعني ببساطة عدد البتات في مسار بيانات معين. ولكن بحلول منتصف الستينيات. فيما يتعلق بتطوير نظام IBM/360 (مجمعها الكبير من أجهزة الكمبيوتر التجارية) ، أصبحت الكلمة تعني مجموعة من 8 بت.

... أحد الأسباب التي تجعل IBM تنجذب نحو 8 بت بايت كان السهولة في تخزين الأرقام بتنسيق يعرف باسم BCD. ولكن كما سنرى في الفصول المقبلة ، فإن البايت المصادف على الصدفة مثالية لتخزين النص لأن معظم اللغات المكتوبة في جميع أنحاء العالم (باستثناء التصويرات الأيديوغرافية المستخدمة في الصينية واليابانية والكورية) يمكن تمثيلها بأقل من 256 الشخصيات.

أسباب تاريخية ، أفترض. 8 هي قوة 2 و 2^2 هي 4 و 2^4 = 16 ليست سوى القليل جدًا بالنسبة لمعظم الأغراض ، وجاء 16 (القوة التالية لشخصين) في وقت لاحق.

لكن السبب الرئيسي ، كما أظن ، هو حقيقة أن لديهم معالجات دقيقة 8 بت ، ثم 16 بت من المعالجات الدقيقة ، التي يمكن تمثيل كلماتها بشكل جيد كثمانين ، وهكذا. كما تعلمون ، الرصيف التاريخي والتكوين للخلف وما إلى ذلك.

سبب آخر متشابه مماثل ضد "التحجيم لأسفل": إذا كنا ، على سبيل المثال ، نستخدم 4 بت ككلمة واحدة ، فسنحصل على نصف TROUTTEPT فقط مقارنة بـ 8 بت. بصرف النظر عن الفائض كثيراً أسرع.

يمكنك دائمًا الضغط على أرقام على سبيل المثال 2 في النطاق 0..15 في ثماني واحد ... عليك فقط استخراجها باليد. ولكن ما لم يكن لديك ، مثل ، Gazillions من مجموعات البيانات التي يجب الحفاظ عليها في الذاكرة جنبًا إلى جنب ، فإن هذا لا يستحق كل هذا الجهد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top