عناصر الحساب في جافا سكربت

عناصر الحساب في جافا سكربت

عامل الحساب الاسم وصف
& AND إذا كانت النقاطين كلاهما 1، فسيتم تعيين كل نقطة إلى 1
| OR إذا كان هناك نقطة واحدة فقط من النقاطين 1، فسيتم تعيين كل نقطة إلى 1
^ XOR إذا كان هناك نقطة واحدة فقط من النقاطين 1، فسيتم تعيين كل نقطة إلى 1
~ NOT عكس جميع النقاط
<< إعادة تعيين اليسار بالصفر من خلال دفع الصفر من اليمين إلى اليسار وتسقط أحدث النقاط
>> إعادة تعيين اليمين الموقع من خلال دفع نسخة من أحدث النقاط من اليسار إلى اليمين وتسقط أحدث النقاط
>> إعادة تعيين اليمين بالصفر من خلال دفع الصفر من اليسار إلى اليمين وتسقط أحدث النقاط

مثال

العمل النتيجة المعادلة النتيجة
5 & 1 1 0101 & 0001 0001
5 | 1 5 0101 | 0001 0101
5 ^ 1 4 0101 ^ 0001 0100
~ 5 10 ~0101 1010
5 << 1 10 0101 << 1 1010
5 >> 1 2 0101 >> 1 0010
5 >>> 1 2 0101 >>> 1 0010

استخدام عدد bitwise ذو 32 بت في JavaScript

يخزن JavaScript الأرقام كعدد عشري ذو 64 بت، لكن جميع العمليات bitwise تتم باستخدام عدد ثنائي ذو 32 بت.

تحويل الأرقام إلى عدد متباين ذو 32 بت قبل إجراء عملية الحساب bitwise.

بعد إجراء عملية الحساب bitwise، سيتم تحويل النتيجة إلى عدد JavaScript ذو 64 بت.

استخدام مثال على عدد ثنائي غير متباين من أربعة أرقام. لذا، ~5 يعود 10.

بما أن JavaScript يستخدم العدد المتباين ذو 32 بت، فإن JavaScript سيعود -6.

00000000000000000000000000000101 (5)

11111111111111111111111111111010 (~5 = -6)

استخدام أكبر موضع في العدد المتباين كعلامة السالب.

عملية bitwise AND

عند إجراء عملية bitwise AND على زوج من الأرقام، إذا كانت الأرقام في الموضعين كلاهما 1، فإن النتيجة تعود 1.

مثال على وحدة:

الحساب النتيجة
0 & 0 0
0 & 1 0
1 & 0 0
1 & 1 1

مثال على أربعة أرقام:

الحساب النتيجة
1111 & 0000 0000
1111 & 0001 0001
1111 & 0010 0010
1111 & 0100 0100

عملية bitwise OR

عند إجراء عملية bitwise OR على زوج من الأرقام، إذا كان أحد الأرقام 1، فإن النتيجة تعود 1:

مثال على وحدة

الحساب النتيجة
0 | 0 0
0 | 1 1
1 | 0 1
1 | 1 1

الحسابات على أربعة أرقام:

العمل النتيجة
1111 | 0000 1111
1111 | 0001 1111
1111 | 0010 1111
1111 | 0100 1111

عملية bitwise XOR

عند إجراء عملية bitwise XOR على زوج من الأرقام، إذا كانت الأرقام في الموضعين مختلفة، فإن النتيجة تعود 1:

مثال على وحدة:

الحساب النتيجة
0 ^ 0 0
0 ^ 1 1
1 ^ 0 1
1 ^ 1 0

مثال على أربعة أرقام:

الحساب النتيجة
1111 ^ 0000 1111
1111 ^ 0001 1110
1111 ^ 0010 1101
1111 ^ 0100 1011

تحويل البايت AND (&)

إذا كانت الأرقام في الموضعين كلاهما 1، فإن عملية الحساب bitwise AND تعود 1:

Decimal Binary
5 00000000000000000000000000000101
1 00000000000000000000000000000001
5 & 1 00000000000000000000000000000001 (1)

مثال

var x = 5 & 1;

جرب بنفسك

تحويل البايت OR (|)

If one of the bits is 1, the bitwise OR operation returns 1:

Decimal Binary
5 00000000000000000000000000000101
1 00000000000000000000000000000001
5 | 1 00000000000000000000000000000101 (5)

مثال

var x = 5 | 1;

جرب بنفسك

JavaScript bitwise XOR (^)

If the bits are different, XOR returns 1:

Decimal Binary
5 00000000000000000000000000000101
1 00000000000000000000000000000001
5 ^ 1 00000000000000000000000000000100 (4)

مثال

var x = 5 ^ 1;

جرب بنفسك

JavaScript bitwise NOT (~)

Decimal Binary
5 00000000000000000000000000000101
~5 11111111111111111111111111111010 (-6)

مثال

var x = ~5;

جرب بنفسك

JavaScript (zero-padded) bitwise left shift (<<)

This is zero-padded left shift. One or more zero bits are pushed in from the right, and the leftmost bit is removed:

Decimal Binary
5 00000000000000000000000000000101
5 << 1 00000000000000000000000000001010 (10)

مثال

var x = 5 << 1;

جرب بنفسك

JavaScript (signed) bitwise right shift (>>)

This is sign-preserved right shift. The leftmost bit is pushed in from the left, and the rightmost bit is shifted out:

Decimal Binary
-5 11111111111111111111111111111011
-5 >> 1 11111111111111111111111111111101 (-3)

مثال

var x = -5 >> 1;

جرب بنفسك

JavaScript (zero-padded) right shift (>>>)

This is zero-padded right shift. One or more zero bits are pushed in from the left, and the rightmost bit is shifted out:

Decimal Binary
5 00000000000000000000000000000101
5 >>> 1 00000000000000000000000000000010 (2)

مثال

var x = 5 >>> 1;

جرب بنفسك

32-bit signed integer (binary number)

It is easy to understand the 32-bit integer with only one set bit:

ممثلة ثنائية قيمة عشرية
00000000000000000000000000000001 1
00000000000000000000000000000010 2
00000000000000000000000000000100 4
00000000000000000000000000001000 8
00000000000000000000000000010000 16
00000000000000000000000000100000 32
00000000000000000000000001000000 64

زيادة عدد الأرقام المعددة تكشف عن نمط الثنائي:

ممثلة ثنائية قيمة عشرية
00000000000000000000000000000101 5 (4 + 1)
00000000000000000000000000101000 40 (32 + 8)
00000000000000000000000000101101 45 (32 + 8 + 4 + 1)

العدد السالب هو إضافة إكمال الثنائي الإضافي لعدد صحيح:

ممثلة ثنائية قيمة عشرية
00000000000000000000000000000101 5
11111111111111111111111111111011 -5
00000000000000000000000000101000 40
11111111111111111111111111011000 -40
11111111111111111111111111011001 -41

تحويل العشري إلى ثنائي

مثال

function dec2bin(dec){
    return (dec >>> 0).toString(2);
}

جرب بنفسك

تحويل الثنائي إلى عشري

مثال

function bin2dec(bin){
    return parseInt(bin, 2).toString(10);
}

جرب بنفسك