تقسيم كثافة العمليات وعدم القدرة لطفلين مقرها

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

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا أعلم أنك يمكن تقسيم عدد السلطة لطفلين في نصف مثل ذلك:

halfintR = some32bitint & 0xFFFF
halfintL = some32bitint >> 16

ويمكنك أن تفعل نفس الشيء بالنسبة لعدد صحيح والتي يحدها من عدم القدرة اثنين من الفضاء؟

و(لنفترض أنك تريد النطاق الخاص بك إلى أن يقتصر على مجموعة من الأعداد الصحيحة التي تنسجم مع 4 قاعدة رقم 52 مساحة غير الموقعة)

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

المحلول

هل يمكن استخدام ما يلي

rightDigits = number % 2704 // 52 squared
leftDigits = number / 2704

نصائح أخرى

حسنا، بالطبع. & 0xffff هو نفس % 0x10000 و>> 16 هو نفس / 0x10000. انها مجرد أن القسمة على قوة لطفلين هو أكثر كفاءة عندما يتم ذلك مع عمليات قليلا مثل تحويل واخفاء. تعمل الفرقة مع أي عدد (داخل نطاق التمثيل).

وبمجرد أن ندرك أن & و>> تستخدم للقيام modulo اوند division حساب على التوالي، يمكنك كتابة ما تريد على النحو التالي:

lower = some4DigitsNumberBase52 % (52 * 52)
upper = some4DigitaNumberBase52 / (52 * 52)

وهذا هو الأساس للقيام حساب القاعدة. يمكنك أيضا استخلاص الحل من الخوارزمية التي يعرض رقم في قاعدة محددة: كيف يمكنك الخروج مع أقصى اليمين رقمين والأرقام أقصى اليسار 2

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