---
title: "التعامل مع حسابات الفاصلة العائمة في JavaScript: أسلوب بسيط"
description: "ألا نحب جميعًا Javascript؟"
canonical: https://oozou.com/ar/blog/handling-floating-point-arithmetic-in-javascript-a-simple-approach-25
locale: ar
date: 2017-08-21
author: "OOZOU Team"
---

# التعامل مع حسابات الفاصلة العائمة في JavaScript: أسلوب بسيط

> ألا نحب جميعًا Javascript؟

Published: 2017-08-21 · Author: OOZOU Team (Engineering) · 7 min read

تحويل **العدد الثنائي** إلى **عدد عشري** مهمة شائعة في البرمجة. وفي **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** للنظام الثنائي).

إليكم طريقة ذلك:

```javascript
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 الخاصة بكم بسهولة.

---

Contact OOZOU: hello@oozou.com · +66 2544 0000 · https://oozou.com/ar/contact

More for AI agents: https://oozou.com/llms.txt · every page has a markdown twin at its URL plus ".md"
