التعامل مع حسابات الفاصلة العائمة في JavaScript: أسلوب بسيط
ألا نحب جميعًا Javascript؟

تحويل العدد الثنائي إلى عدد عشري مهمة شائعة في البرمجة. وفي JavaScript يمكن القيام بذلك بسهولة باستخدام الدوال المدمجة، أو بكتابة دالة تحويل مخصصة تحوّل النص الثنائي إلى عدد عشري. وفهم آلية التحويل من النظام الثنائي إلى النظام العشري ضروري للتعامل مع أنظمة الأعداد المختلفة. في هذه المقالة، نستكشف كيفية تحويل الأعداد الثنائية إلى عشرية في JavaScript بعدة أساليب. وفي النهاية، ستتمكنون من تحويل النصوص الثنائية إلى أعداد عشرية والعكس، وستفهمون كيف يعمل تحويل الأعداد في JavaScript.
ما هو العدد الثنائي؟
العدد الثنائي عدد يُعبَّر عنه في النظام الثنائي، الذي يستخدم رقمين فقط: 0 و 1. ويمثّل كل رقم في النص الثنائي قوة متزايدة للعدد 2، بدءًا من الرقم الأقصى يمينًا (الذي يمثّل 2^0) وانتقالًا نحو اليسار.
فمثلًا، يمكن تحويل العدد الثنائي 1011 إلى العشري على النحو التالي:
1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0 = 8 + 0 + 2 + 1 = 11
كيف نحوّل العدد الثنائي إلى عشري
في JavaScript، يمكن تحويل النص الثنائي إلى عدد عشري باستخدام الدالة parseInt()، أو يمكنكم كتابة دالة تحويل خاصة بكم تحوّل الثنائي إلى عشري باستخدام العمليات على مستوى البت (bitwise operations).
الأسلوب 1: استخدام الدالة parseInt()
أسهل طريقة لتحويل عدد ثنائي إلى عدد عشري في JavaScript هي استخدام الدالة المدمجة parseInt(). تأخذ هذه الدالة وسيطين: النص الثنائي والأساس (وهو هنا 2 للنظام الثنائي).
إليكم طريقة ذلك:
function binaryToDecimal(binaryString) {
return parseInt(binaryString, 2);
}
const binaryNumber = "1011";
const decimalNumber = binaryToDecimal(binaryNumber);
console.log(`The decimal value of the binary string ${binaryNumber} is ${decimalNumber}`);
الشرح:
- parseInt(binaryString, 2): تحوّل النص الثنائي إلى عدد عشري. ويحدّد الوسيط الثاني (2) أساس العدد المُدخل (ثنائي).
- يُحوَّل النص الثنائي "1011" إلى العدد العشري 11.الأسلوب 2: كتابة دالة مخصصة
إذا أردتم فهمًا أعمق لآلية التحويل من الثنائي إلى العشري، يمكنكم كتابة دالة مخصصة تحوّل النص الثنائي إلى عدد عشري يدويًا.
function customBinaryToDecimal(binaryString) {
let decimal = 0;
for (let i = 0; i < binaryString.length; i++) {
const bit = binaryString[binaryString.length - 1 - i]; // Get the bit from the end
decimal += bit * Math.pow(2, i); // Add the corresponding power of 2
}
return decimal;
}
const binaryString = "1101";
const decimalResult = customBinaryToDecimal(binaryString);
console.log(`The decimal conversion of binary ${binaryString} is ${decimalResult}`);
الشرح:
- نمرّ على النص الثنائي من اليمين إلى اليسار.
- نضرب كل بت في 2 مرفوعًا إلى قوة تساوي موقع البت.
- في النهاية، نجمع كل هذه القيم للحصول على العدد العشري.
فمثلًا، مع النص الثنائي "1101"، هذا ما يحدث داخل الدالة:
1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 8 + 4 + 0 + 1 = 13
الأسلوب 3: استخدام معاملات الإزاحة على مستوى البتأسلوب آخر هو استخدام معاملات الإزاحة (bitwise shift operators) لتحويل الثنائي إلى عشري يدويًا. وتعتمد هذه الطريقة على إزاحة البتات إلى اليسار وإضافة قيمة البت الحالي.
function bitwiseBinaryToDecimal(binaryString) {
let decimal = 0;
for (let i = 0; i < binaryString.length; i++) {
decimal = (decimal << 1) | (binaryString[i] - '0');
}
return decimal;
}
const binaryValue = "1010";
const decimalValue = bitwiseBinaryToDecimal(binaryValue);
console.log(`The decimal of binary ${binaryValue} is ${decimalValue}`);
الشرح:
decimal << 1: يزيح القيمة العشرية الحالية بمقدار 1 إلى اليسار، وهو ما يعادل ضربها في 2.- |: يضيف معامل OR على مستوى البت قيمة البت الحالي إلى العدد العشري.
غالبًا ما تكون هذه الطريقة أسرع في بعض البيئات التي يكون فيها تحسين الأداء أمرًا حاسمًا، لكنها قد تكون أصعب فهمًا على المبتدئين.
التحويل من العشري إلى الثنائي
بعد أن تناولنا كيفية تحويل الثنائي إلى عشري، لنلقِ نظرة سريعة على كيفية تحويل العدد العشري إلى نص ثنائي.
الأسلوب 1: استخدام toString()
في JavaScript، يمكنكم استخدام الدالة toString() لتحويل العدد العشري إلى نص ثنائي.
function decimalToBinary(decimalNumber) {
return decimalNumber.toString(2);
}
const decimalNum = 13;
const binaryString = decimalToBinary(decimalNum);
console.log(`The binary representation of ${decimalNum} is ${binaryString}`);
الأسلوب 2: كتابة دالة مخصصة للتحويل من العشري إلى الثنائي يمكنكم أيضًا كتابة دالة تحويل خاصة بكم تحوّل العدد العشري إلى نص ثنائي:
function customDecimalToBinary(decimalNumber) {
let binary = "";
while (decimalNumber > 0) {
binary = (decimalNumber % 2) + binary;
decimalNumber = Math.floor(decimalNumber / 2);
}
return binary || "0"; // Return "0" if the decimal number is 0
}
const decimalVal = 9;
const binaryResult = customDecimalToBinary(decimalVal);
console.log(`The binary string of ${decimalVal} is ${binaryResult}`);
الشرح:
- نقسم العدد العشري على 2 بشكل متكرر.
- في كل عملية قسمة، نأخذ الباقي ونضعه في بداية النص الثنائي.
- تستمر العملية حتى يصبح العدد العشري مساويًا لـ 0.
فمثلًا، تحويل 9 إلى الثنائي يعطي:
sql
9 / 2 = 4 remainder 1 (binary digit)
4 / 2 = 2 remainder 0 (binary digit)
2 / 2 = 1 remainder 0 (binary digit)
1 / 2 = 0 remainder 1 (binary digit)
Result: 1001
الخلاصة
يصبح تحويل الثنائي إلى عشري و العشري إلى ثنائي في JavaScript أمرًا مباشرًا بمجرد فهم المبادئ الأساسية. وسواء استخدمتم الدالة المدمجة parseInt() للتحويل من الثنائي إلى العشري أو أنشأتم دالة تحويل مخصصة، فالعملية بسيطة نسبيًا.
- يمكن التحويل من الثنائي إلى العشري باستخدام parseInt() في JavaScript، أو بدوال مخصصة، أو بمعاملات البت.
- ويمكن التحويل من العشري إلى الثنائي باستخدام الدالة toString() أو بأسلوب مخصص يعتمد على حلقة تكرار.
وبإتقان هذه الأساليب، ستتعاملون بثقة مع تحويل الأعداد في JavaScript في طيف واسع من حالات الاستخدام.
الأسئلة الشائعة
**1. كيف نحوّل عددًا ثنائيًا إلى عدد عشري في JavaScript؟**يمكنكم تحويل العدد الثنائي إلى عدد عشري باستخدام parseInt(binaryString, 2)، حيث يحدّد الوسيط الثاني أن المُدخل بالنظام الثنائي.
**2. ما هو النص الثنائي؟**يُقصد بـ النص الثنائي سلسلة من الأرقام تتكوّن من 0 و 1 فقط، وتمثّل عددًا في النظام الثنائي.
**3. كيف نحوّل عددًا عشريًا إلى ثنائي في JavaScript؟**يمكنكم تحويل العدد العشري إلى نص ثنائي باستخدام decimalNumber.toString(2)، أو بكتابة حلقة تكرار مخصصة تُجري عمليات قسمة متتالية على 2.
**4. لماذا تستخدم JavaScript الأساس 2 في التحويل الثنائي؟**يُستخدم الأساس 2 في النظام الثنائي لأنه يمثّل الأعداد برقمين فقط هما 0 و 1، وهما أساس الحساب الثنائي في أنظمة الحاسوب.
**5. هل يمكن استخدام العمليات على مستوى البت للتحويل من الثنائي إلى العشري؟**نعم، يمكن استخدام معاملات الإزاحة على مستوى البت للتحويل من الثنائي إلى العشري عبر إزاحة البتات وإضافة قيمها وفق قوى العدد 2.
**6. ما الفرق بين نظامَي الأعداد الثنائي والعشري؟**يستخدم النظام الثنائي رقمين فقط (0 و 1)، بينما يستخدم النظام العشري عشرة أرقام (0-9). ويُستخدم النظام الثنائي عادةً في الحواسيب، بينما يُستخدم النظام العشري في الرياضيات اليومية.
وبفهم هذه المفاهيم، ستكونون مستعدين للتعامل مع تحويل الأعداد في مشاريع JavaScript الخاصة بكم بسهولة.


