سؤال

أنا مبتدئ بيرل،

هل يمكنني ببساطة استخدام حسابي 64 بت في بيرل؟

علي سبيل المثال

$operand1 = 0xFFFFFFFFFFFF;   # 48 bit value
$operand2 = 0xFFFFFFFFFFFF;   # 48 bit value

$Result = $operand1 * $operand2;
  • أنا أبحث أساسا عن بديل لل int64_t في بيرل.
  • هل هناك أي طريقة للذكر، إذا تم توقيع المتغير أو غير موقعة؟
هل كانت مفيدة؟

المحلول

نعم، مع ذلك، يجب أن يكون لديك بيرل جمعت مع دعم 64 بت.

نصائح أخرى

يرى bigint.:

دعم biginteger شفافة ل perl ...

جميع المشغلين (بما في ذلك عمليات الرياضيات الأساسية) باستثناء مشغل النطاق .. مثقلة. يتم إنشاء الثوابت الصحيحة كما النسخين المناسبين.

يتم اقتطاع ثوابت النقاط العائمة إلى عدد صحيح. يتم اقتطاع جميع أجزاء ونتائج التعبيرات أيضا.

على عكس عدد صحيح, ، تنشئ براغما هذه الثوابت عدد صحيح محدود فقط في حجمها من خلال الذاكرة المتوفرة ووقت وحدة المعالجة المركزية ...

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

ال perlnumber. تحتوي الصفحة اليدوية على مزيد من المعلومات حول التنسيقات الرقمية المختلفة التي يدعمها بيرل.

كن على دراية بحساب 64 بت في بيرل هو واحد، ولكن ما يتم عرضه بواسطة SprinthF٪ D٪ U و٪ S، هو الثاني. يدعم إصدار Perl الحالي 64 مليار دون مشاكل، ولكن SPRINTF٪ D الشكل لا،٪ B كذلك.

use bigint سيجعل بيرل تعامل مع أعداد صحيحة الحجم التعسفي بشكل صحيح دون تجاوز عدد صحيح.

على سبيل المثال:

use bigint;
print 1 << 256;

سوف تطبع:

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