أين هو التوقيع على أنواع متكاملة توقيع مخزنة؟ (في جاوة)

StackOverflow https://stackoverflow.com/questions/1670688

  •  13-09-2019
  •  | 
  •  

سؤال

يحمل بايت نوع بيانات Java على سبيل المثال البيانات من -128 إلى 127 في بايت واحد على التخزين. لتمكين التعرض للفزع بين 0 إلى 128 من 0 إلى 127 سيتطلب بيانات إضافية من شأنها أن تأخذ Datatype Opver التخزين المخصص. من المسلم به أن الأمر سيستغرق فقط 1 بت فقط ولكنه لا يزال يمتد.

كيف تقوم جافا بذلك؟

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

المحلول

متمم ثنائي:

يتم تعريف الأنواع البدائية لتكون هي نفسها على جميع الأجهزة وفي جميع التطبيقات، وهي أحجام مختلفة من الأعداد الصحيحة التي تكملة اثنين من الأرقام، والأرقام الفاصلة العائمة من IEEE 754 المزدوجة والمزدوجة، ونوع منطقية، وحركة Unicode Char يكتب. -مواصفات لغة Java: مقدمة

يمكنك تخيلها كعدد صحيح من 0 إلى 255 منها 128 دائماً طرح.

المزيد من التقنية: يمكن إلغاء عدد صحيح (وسوف) (إيجابي → سلبي أو العكس) عن طريق إضفاء طالب بتاتها وإضافة واحدة. هذا هو تقريبيا مثل مكمل واحد (الذي يكسقل ببساطة جميع البتات. لكن تكمل المرء لديه مشكلة أنه يحتوي على اثنين من الأصفار المختلفة: +0 و -0 (الأرقام الفاصلة العائمة لها ذلك أيضا، ولكن لأسباب أخرى وأكثر فائدة ☺). هذا عن طريق إضافة واحدة، وبالتالي تمديد نطاق القيم السلبية (هذا هو السبب −128..127).

بطريقة ما يمكنك القول أن العلامة هي بالفعل "مخزنة" في القليل الأول من الرقم. لذلك ملاحظتك التي تحتاجها قليلا من التخزين صحيحة. لكن النطاق الرقمي ل byte (إيجابي أو سلبي، يتجاهل علامة) يحتاج فقط إلى 7 بت، لذلك لديك بايت مرة أخرى.

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