سؤال

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

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

المحلول

بيانات متعددة باين في class يتم تخزين الملفات Big-endian.

من عند مواصفات الجهاز الظاهري Java، Java SE 7 Edition, الفصل 4: class تنسيق الملف:

يتكون ملف فئة من دفق من بايت 8 بت. يتم بناء كميات 16 بت و 32 بت و 64 بت من خلال القراءة في اثنين وأربعة وثمانية بايت 8 بت متتالية على التوالي. يتم دائما تخزين عناصر البيانات متعددة البياض في أمر الإناث الكبيرة، حيث تأتي البايتات العالية أولا.

علاوة على ذلك، فإن المعامل في تعليمات bytecode هي أيضا الإند الداخلي إذا أمقت بايت متعددة.

من عند مواصفات الجهاز الظاهري Java، Java SE 7 Edition, القسم 2.11: ملخص مجموعة التعليمات:

إذا كان المعامل أكثر من بايت واحد في الحجم، فسيتم تخزينه في بايت Big-Endian-Order-Order-Order أولا. على سبيل المثال، يتم تخزين مؤشر رقمي 16 بت غير موقعة في المتغيرات المحلية كعمل اثنين من بايت غير موقعة، byte1 و byte2, ، بحيث تكون قيمتها (byte1 << 8) | byte2.

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

نصائح أخرى

من المؤكد أن البيانات الفعلية الفعلية المخزنة في العملية الجارية ستتابق بالتأكيد من نافذة العملية المنفذة. عموما تنسيقات الملفات (بما في ذلك ملفات الفصل) ستكون في ترتيب الشبكة (الإندان الكبير).

من الصعب عموما أن أقول ما يفعله الجهاز تحتها، حيث يتم تجريده بواسطة الجهاز الظاهري. لا يمكنك إلقاء short[] ل byte[] كما يمكنك في C و C ++. java.nio.bytorder.nitinger () يجب أن تعطيك النينثة الأساسية. مطابقة Endianess مفيدة عند استخدام المخازن المؤقتة NIO غير البايت.

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