في JavaScript، يتم الإشارة إلى جميع المتغيرات الصحيحة بشكل افتراضي. ماذا يعني هذا؟
تستخدم الأعداد الصحيحة ذات الإشارة 31 بت لتمثيل قيمة العدد الصحيح، والبت 32 لتمثيل إشارة العدد الصحيح يمثل 0 رقمًا موجبًا، ويمثل 1 رقمًا سالبًا.
يتراوح نطاق القيمة من -2^31 - 2^31-1، وهو -2147483648 إلى 2147483647.
عندما تقوم JavaScript بتنفيذ عمليات بت، فإنها تستخدم نوعًا صحيحًا موقّعًا 32 بت، مما يعني أن نتيجة التحويل هي أيضًا نوع عدد صحيح موقّع 32 بت. في بعض الأحيان، ستحدث نتائج غير متوقعة عندما نقوم بإجراء التحويل. وفيما يلي مقارنة بين لغة C وJS.
لغة سي
انسخ رمز الكود كما يلي:
كثافة العمليات غير الموقعة = 3774191835u؛
int غير الموقعة ب = أ >> 2؛
/* ب == 943547958 */
جافا سكريبت
انسخ رمز الكود كما يلي:
فار أ = 3774191835؛
فار ب = أ >> 2;
/* ب == -130193866 */
كما ترون، تستخدم JavaScript الأعداد الصحيحة الموقعة عند إجراء عمليات البت، لذلك نحصل على نتائج مختلفة. كيفية حلها؟
يمكننا تحويل الأرقام الموقعة في JavaScript إلى أرقام غير موقعة. فقط قم بإجراء >>>0 عملية التحول.
من الأفضل عدم استخدام >>. يوصى باستخدام >>> لأنه سيتم تحليل البت الموجود في أقصى اليسار كبت إشارة عندما يفيض الرقم، سيتم تحليله كرقم سالب.