DEV Community

Ahmed Hassan Hassan Mohamed
Ahmed Hassan Hassan Mohamed

Posted on • Edited on

التعامل مع الأعداد في لغة جافاسكريبت (Octal, Hex, Binary)

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

نفترض انك كتبت كود عشان تسترجع عدد معين ولكن المخرجات في الأخر طلعت نتيجة آخرى.

زي المثال ده :

let num = 021
console.log(num)
// output: 17 (decimal equivalent)
Enter fullscreen mode Exit fullscreen mode

الoutput
طلعت 17 مش 21

السبب هنا إن جافاسكريب بتفسر العدد حسب الصيغة (literal form)
وبعد كده بتحوله وبيتخزن داخلياً ك
Double Precision Floating Point.

سواء كتبت العدد
بال Octal (0o21)
أو بال Hexadecimal (0x1A)
او بال Binary (0b1010)،
هيتم تحويل العدد لرقم عشري.

وجود الصفر في بداية العدد (021) معناه إن الرقم مش عشري وهيتم تحويله، الإستثناء الوحيد هو لما يكون الرقم صفر (0) لوحده ساعتها هيتم طباعته.

وعشان تتجنب المشكلة ممكن تستخدم الدالة
toString(base) لتحويل العدد لأي قاعدة عددية

let number = 255;

// 11111111 (ثنائي)
console.log(number.toString(2));  
// 377 (ثماني)
console.log(number.toString(8)); 
// ff (ست عشري)
console.log(number.toString(16));
Enter fullscreen mode Exit fullscreen mode

بالطريقة دي، تقدر تطبع أي رقم بأي نظام عددي بدون أي مشاكل، وتتفادى استخدام الصيغ القديمة اللي فيها صفر في البداية (021) واللي ممكن تعمل لخبطة أو خطأ في الإصدارات الحديثة من جافاسكريبت.​

Top comments (0)