عملیات بیت در JavaScript
- صفحه قبلی JS ساختاری
- صفحه بعدی عبارتهای منظم JS
عملیات بیت در JavaScript
عملگر | نام | توضیح |
---|---|---|
& | 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 |
JavaScript از اعداد بیتاری 32 بیت استفاده میکند
JavaScript اعداد را به صورت اعداد浮point 64 بیت ذخیره میکند، اما تمامی عملیات بیت با اعداد 32 بیت بیتاری انجام میشود.
قبل از انجام عملیات بیت، JavaScript اعداد را به اعداد صحیح نشانهدار 32 بیت تبدیل میکند.
پس از انجام عملیات بیت، نتیجه به اعداد 64 بیت JavaScript تبدیل میشود.
مثالهای بالا از اعداد بینشان 4 بیت استفاده میکنند. بنابراین ~ 5 به 10 برمیگردد.
به دلیل اینکه JavaScript از اعداد صحیح نشانهدار 32 بیت استفاده میکند، JavaScript به -6 برمیگردد.
00000000000000000000000000000101 (5)
11111111111111111111111111111010 (~5 = -6)
اعداد صحیح نشانهدار از بیت سمت چپ به عنوان علامت استفاده میکنند.
عملیات بیت AND
وقتی که به یک جفت از بیتها عملیات بیت 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 |
عملیات بیت OR
وقتی که به یک جفت از بیتها عملیات بیت 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 |
عملیات بیت XOR
وقتی که به یک جفت از بیتها عملیات بیت 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 |
JavaScript عملیات بیت AND (&)
اگر تمامی مقادیر بیتها 1 باشند، عملیات بیت AND به 1 برمیگردد:
دهی | دودویی |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 & 1 | 00000000000000000000000000000001 (1) |
مثال
var x = 5 & 1;
JavaScript عملیات بیت OR (|)
اگر یکی از دسیمها 1 باشد، عملیات OR به 1 برمیگردد:
دهی | دودویی |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 | 1 | 00000000000000000000000000000101 (5) |
مثال
var x = 5 | 1;
عملیات XOR (^) در جاوااسکریپت
اگر دسیمها متفاوت باشند، XOR به 1 برمیگردد:
دهی | دودویی |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 ^ 1 | 00000000000000000000000000000100 (4) |
مثال
var x = 5 ^ 1;
عملیات NOT (~) در جاوااسکریپت
دهی | دودویی |
---|---|
5 | 00000000000000000000000000000101 |
~5 | 11111111111111111111111111111010 (-6) |
مثال
var x = ~5;
حرکت به سمت چپ (<<)(پر کردن صفر) در جاوااسکریپت
این یک حرکت به سمت چپ با پر کردن صفر است. یک یا چند صفر از سمت راست به درون فشرده میشوند، و اولین عدد از سمت چپ بیرون میرود:
دهی | دودویی |
---|---|
5 | 00000000000000000000000000000101 |
5 << 1 | 00000000000000000000000000001010 (10) |
مثال
var x = 5 << 1;
حرکت به سمت راست (>>)(با حفظ نشانه) در جاوااسکریپت
این یک حرکت به سمت راست با حفظ نشانه است. اولین عدد از سمت چپ به درون فشرده میشود، و آخرین عدد از سمت راست بیرون میرود:
دهی | دودویی |
---|---|
-5 | 11111111111111111111111111111011 |
-5 >> 1 | 11111111111111111111111111111101 (-3) |
مثال
var x = -5 >> 1;
حرکت به سمت راست (>>>)(پر کردن صفر) در جاوااسکریپت
این یک حرکت به سمت راست با پر کردن صفر است. یک یا چند صفر از سمت چپ به درون فشرده میشوند، و آخرین عدد از سمت راست بیرون میرود:
دهی | دودویی |
---|---|
5 | 00000000000000000000000000000101 |
5 >>> 1 | 00000000000000000000000000000010 (2) |
مثال
var x = 5 >>> 1;
عدد صحیح 32 بیتی (عدد دودویی)
فهمیدن عدد صحیح 32 بیتی که فقط یک دسیم دارد آسان است:
نمودار دو دویی | مقدار دهی |
---|---|
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); }
- صفحه قبلی JS ساختاری
- صفحه بعدی عبارتهای منظم JS