JavaScript:عملیات‌های بیتی در جاوااسکریپت

از ویکی کد
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)
پرش به ناوبری پرش به جستجو

https://www.w3schools.com/js/js_bitwise.asp

JavaScript Bitwise Operations

عملیات های بیتی در جاوا اسکریپت

JavaScript Bitwise Operators

عملگر های بیتی در جاوا اسکریپت

عملگر نام مثال
& AND در صورتی که هر دو بیت برابر با یک باشند هر بیت را یک می کند.
| OR در صورتی یکی از دو بیت یک باشد ، هر بیت را یک می کند.
^ XOR در صورتی که فقط یکی از دو بیت یک باشد ، هر بیت را یک می کند.
~ NOT همه بیت ها را برعکس می کند.
<< Zero fill left shift شیفت سمت چپ به وسیله ی پوش کردن صفراز سمت راست و اجازه خارج شدن به چپ ترین بیت
>> Signed right shift شیفت سمت راست با پوش کردن کپی از چپ ترین بیت از سمت چپ و اجازه خارج شدن به راست ترین بیت
>>> Zero fill right shift شیفت راست با پوش کردن صفر از سمت چپ و اجازه خارج شدن به راست ترین بیت

Examples

نتیجه دستور یکسان نتیجه عملگر
0001 0101 & 0001 1 5 & 1
0101 0101 | 0001 5 5 | 1
1010 ~0101 10 ~ 5
1010 0101 << 1 10 5 << 1
0100 0101 ^ 0001 4 5 ^ 1
0010 0101 >> 1 2 5 >> 1
0010 0101 >>> 1 2 5 >>> 1

JavaScript Uses 32 bits Bitwise Operands

جاوا اسکریپت از عملوند های 32 بیتی استفاده می کند

JavaScript stores numbers as 64 bits floating point numbers, but all bitwise operations are performed on 32 bits binary numbers.

جاوا اسکریپت تمامی اعداد را به صورت اعداد 64 بیت اعشاری ذخیره می کند ، اما عملیات های 32 بیت بر روی اعداد 32 بیتی باینری صورت می پذیرد .

Before a bitwise operation is performed, JavaScript converts numbers to 32 bits signed integers.

قبل از اینکه یک عملیات بیتی انجام شود ، جاوا اسکریپت عدد را به یک عدد صحیح 32 بیتی علامت دار تبدیل می کند.

After the bitwise operation is performed, the result is converted back to 64 bits JavaScript numbers.

بعد از اینکه عملیات بیتی صورت گرفت ، نتیجه به اعداد 64 بیتی جاوا اسکریپت تبدیل می شود  .

The examples above uses 4 bits unsigned binary numbers. Because of this ~ 5 returns 10.

مثال بالا از اعداد باینری 4 بیتی استفاده می کند . به خاطر همین امر ~ 5 عدد 10 را برمی گرداند .

Since JavaScript uses 32 bits signed integers, it will not return 10. It will return -6.

از انجایی که جاوا اسکریپت از اعداد صحیح 32 بیتی علامتدار استفاده می کند ، به جای مقدار 10 ، مقدار 6- را برمی گرداند .

00000000000000000000000000000101 (5)

11111111111111111111111111111010 (~5 = -6)

A signed integer uses the leftmost bit as the minus sign.

یک عدد صحیح علامتدار از چپ ترین بیت به عنوان بیت علامت استفاده می کند .

Bitwise AND

و یا And بیتی

When a bitwise AND is performed on a pair of bits, it returns 1 if both bits are 1.

زمانی که And بیتی روی یک جفت از بیت ها صورت می گیرد ، اگر دو بیت یک باشند ، مقدار یک را برمی گرداند.

One bit example:

مثال یک بیتی :

نتیجه عملگر
0 0 & 0
0 0 & 1
0 1 & 0
1 1 & 1

4 bits example:

مثال چهاربیتی :

عملگر نتیجه
1111 & 0000 0000
1111 & 0001 0001
1111 & 0010 0010
1111 & 0100 0100

Bitwise OR

یا بیتی (Or بیتی)

When a bitwise OR is performed on a pair of bits, it returns 1 if one of the bits are 1:

زمانی یا بیتی یا or بیتی بر روی یک جفت از بیت ها عمل می کند ، اگر یکی از بیت ها یک باشد ، مقدار یک را برمی گرداند :

One bit example:

مثال یک بیتی :

نتیجه عملگر
0 0 | 0
1 0 | 1
1 1 | 0
1 1 | 1

4 bits example:

مثال چهاربیتی :

نتیجه عملگر
1111 1111 | 0000
1111 1111 | 0001
1111 1111 | 0010
1111 1111 | 0100

Bitwise XOR

Xor بیتی

When a bitwise XOR is performed on a pair of bits, it returns 1 if the bits are different:

اگر Xor بیتی روی یک جفت از بیتها صورت بگیرد ، در صورتی که بیت ها متفاوت باشند مقدار یک را برمی گرداند :

One bit example:

مثال یک بیتی :

نتیجه عملگر
0 0 ^ 0
1 0 ^ 1
1 1 ^ 0
0 1 ^ 1

4 bits example:

مثال چهاربیتی :

نتیجه عملگر
1111 1111 ^ 0000
1110 1111 ^ 0001
1101 1111 ^ 0010
1011 1111 ^ 0100

JavaScript Bitwise AND (&)

AND بیتی در جاوا اسکریپت (&)

Bitwise AND returns 1 only if both bits are 1:

And بیتی در صورتی مقدار یک را برمی گرداند که هر دو بیت یک باشند :

مبنای ده باینری
5 00000000000000000000000000000101
1 00000000000000000000000000000001
5 & 1 00000000000000000000000000000001 (1)

Example

var x = 5 & 1;

JavaScript Bitwise OR (|)

یا (Or بیتی ) در جاوا اسکریپت

Bitwise OR returns 1 if one of the bits are 1:

یا بیتی یا OR بیتی در صورتی که یکی از بیت ها یک باشد مقدار یک را برمی گرداند :

مبنای ده باینری
5 00000000000000000000000000000101
1 00000000000000000000000000000001
5 | 1 00000000000000000000000000000101 (5)

Example

var x = 5 | 1;

JavaScript Bitwise XOR (^)

Xor بیتی در جاوا اسکریپت (^)

Bitwise XOR returns 1 if the bits are different:

Xor بیتی در صورتی که بیت ها متفاوت باشند مقدار یک را برمی گرداند :

مبنای ده باینری
5 00000000000000000000000000000101
1 00000000000000000000000000000001
5 ^ 1 00000000000000000000000000000100 (4)

Example

var x = 5 ^ 1;

JavaScript Bitwise NOT (~)

Not بیتی در جاوا اسکریپت

مبنای ده باینری
5 00000000000000000000000000000101
~5 11111111111111111111111111111010 (-6)

Example

var x = ~5;

JavaScript (Zero Fill) Bitwise Left Shift (<<)

شیفت سمت چپ (zero fill) در جاوا اسکریپت

This is a zero fill left shift. One or more zero bits are pushed in from the right, and the leftmost bits fall off:

این شیفت چپ است . یک و یا چند بیت صفر از سمت راست پوش می شود و چپ ترین بیت به بیرون می افتد :

مبنای ده باینری
5 00000000000000000000000000000101
5 << 1 00000000000000000000000000001010 (10)

Example

var x = 5 << 1;

JavaScript (Sign Preserving) Bitwise Right Shift (>>)

شیفت(نگه داری علامت) سمت راست  (<<)

This is a sign preserving right shift. Copies of the leftmost bit are pushed in from the left, and the rightmost bits fall off:

این شیفت سمت راست است . کپی از سمت چپ ترین بیت از سمت چپ پوش می شود و راست ترین بیت به بیرون می افتد :

مبنای ده باینری
-5 11111111111111111111111111111011
-5 >> 1 11111111111111111111111111111101 (-3)

Example

var x = -5 >> 1;

JavaScript (Zero Fill) Right Shift (>>>)

شیفت سمت راست (بر مبنای صفر) (<<<)

This is a zero fill right shift. One or more zero bits are pushed in from the left, and the rightmost bits fall off:

این شیفت سمت راست بر مبنای صفر است . یک و یا چند بیت صفر از سمت چپ پوش می شود و راست ترین بیت بیرون می افتد :

مبنای ده باینری
5 00000000000000000000000000000101
5 >>> 1 00000000000000000000000000000010 (2)

Example

var x = 5 >>> 1;

Binary Numbers

اعداد باینری

Binary numbers with only one bit set is easy to understand:

درک کردن اعداد باینری با یک مجموعه از بیت ها بسیار آسان است .

عدد دسیمال عدد باینری
1 00000000000000000000000000000001
2 00000000000000000000000000000010
4 00000000000000000000000000000100
8 00000000000000000000000000001000
16 00000000000000000000000000010000
32 00000000000000000000000000100000
64 00000000000000000000000001000000

تنظیم چند بیت بیشتر موجب آشکار شدن روش باینری می شود :

عدد دسیمال عدد باینری
5 (4 + 1) 00000000000000000000000000000101
13 (8 + 4 + 1) 00000000000000000000000000001101
45 (32 + 8 + 4 + 1) 00000000000000000000000000101101

JavaScript binary numbers are stored in two's complement format.

اعداد باینری در جاوا اسکریپت به دو صورت ذخیره می شوند .

This means that a negative number is the bitwise NOT of the number plus 1:

این بدان معناست که یک عدد منفی حاصل Not کردن با جمع عدد با عدد یک است :

عدد دسیمال عدد باینری
5 00000000000000000000000000000101
-5 11111111111111111111111111111011
6 00000000000000000000000000000110
-6 11111111111111111111111111111010
40 00000000000000000000000000101000
-40 11111111111111111111111111011000

Converting Decimal to Binary

تبدیل اعداد دسیمال (مبنای ده) به باینری

Example

function dec2bin(dec){

 return (dec >>> 0).toString(2);

}

Converting Binary to Decimal

تبدیل اعداد باینری به دسیمال (مبنای ده)

Example

function bin2dec(bin){

  return parseInt(bin, 2).toString(10);

}