آموزش جاوا اسکریپت

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

آموزش جاوا اسکریپت از مبتدی تا حرفه ای

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

در برنامه‌نویسی، عملیات بیتی (به انگلیسی bitwise operation)، به انجام عملیات مختلف بر روی تک تک بیت‌های یک عدد دودویی یا هر الگوی بیتی دیگری گفته می‌شود. این کار به منظور محاسبه و مقایسه مقادیر مختلف انجام می‌شود و یک عملیات سریع است و مستقیماً توسط پردازنده پشتیبانی می‌شود.

عملگرنام توضیحات
&ANDاگر هر دو بیت 1 باشد ، نتیجه 1 است
|ORاگر یکی از دو بیت 1 باشد ، نتیجه 1 است
^XORنتیجه عبارت 1 است اگر تنها یکی از دو بیت 1 باشد
~NOTهمه بیت ها را معکوس می کند.
<<شیفت به چپ (صفر پرکن)با وارد کردن صفر از راست، همه بیت ها را به سمت چپ حرکت می دهد و به تعداد صفر وارد شده از راست ، بیت های سمت چپ از بین می روند.
>>شیفت به راست علامت داربا وارد کردن یک کپی از چپ ترین بیت، همه بیت ها را به سمت راست حرکت می دهد و به تعداد بیت های وارد شده از راست، بیت های سمت چپ از بین می روند.
>>>شیفت به راست (صفر پرکن)با وارد کردن صفر از چپ، همه بیت ها را به سمت راست حرکت می دهد و به تعداد صفر وارد شده از چپ، بیت های سمت راست از بین می روند.

مثال ها

عملگر نتیجه شبیه به نتیجه
5 & 1 1 0101 & 0001  0001
5 | 1 5 0101 | 0001  0101
~ 5 10  ~0101  1010
5 << 1 10 0101 << 1  1010
5 ^ 1 4 0101 ^ 0001  0100
5 >> 1 2 0101 >> 1  0010
5 >>> 1 2 0101 >>> 1  0010

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

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

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

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

در مثالهای فوق از اعداد باینری 4 بیتی بدون علامت استفاده شده است. به همین دلیل نقیض 5 نتیجه 10 را برمی گرداند.

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

00000000000000000000000000000101 (5) 1111111111111111111111111111111010 (~5 = -6)

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



عملگر بیتی AND

وقتی عملیات بیتی AND روی یک جفت بیت انجام می شود، اگر هر دو بیت 1 باشند، نتیجه 1 باز می گردد؛ در غیر این صورت نتیجه 0 است.

مثال یک بیتیمثال 4 بیتی
عملنتیجهعملنتیجه
0 & 001111 & 00000000
0 & 101111 & 00010001
1 & 001111 & 00100010
1 & 111111 & 01000100

عملگر بیتی OR

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

مثال یک بیتیمثال 4 بیتی
عملنتیجهعملنتیجه
0 | 001111 | 00001111
0 | 111111 | 00011111
1 | 011111 | 00101111
1 | 111111 | 01001111

عملگر بیتی XOR

هنگامی که عملگر بیتی XOR روی یک جفت بیت اعمال می شود ، اگر بیت ها متفاوت باشند 1 باز می گردد در غیر این صورت 0 برمی گرداند:

مثال یک بیتی:مثال 4 بیتی:
عملنتیجهعملنتیجه
0 ^ 001111 ^ 00001111
0 ^ 111111 ^ 00011110
1 ^ 011111 ^ 00101101
1 ^ 101111 ^ 01001011

عملگر بیتی AND در جاوا اسکریپت (&)

عملگر AND اگر هردوبیت 1 باشد ، نتیجه 1 برمیگرداند:

مبنای 10دودویی
500000000000000000000000000000101
100000000000000000000000000000001
5 & 100000000000000000000000000000001 (1)

مثال

خودتان آزمایش کنید

عملگر بیتی OR در جاوا اسکریپت (|)

اگر یکی از بیت ها 1 باشد، نتیجه 1 می شود:

مبنای 10دودویی
500000000000000000000000000000101
100000000000000000000000000000001
5 | 100000000000000000000000000000101 (5)

مثال

خودتان آزمایش کنید

عملگر بیتی XOR در جاوا اسکریپت (^)

اگر دو بیت متفاوت باشند نتیجه XOR روی آنها، 1 می شود:

مبنای 10دودویی
500000000000000000000000000000101
100000000000000000000000000000001
5 ^ 100000000000000000000000000000100 (4)

مثال

خودتان آزمایش کنید

عملگر بیتی NOT در جاوا اسکریپت (~)

مبنای 10دودویی
500000000000000000000000000000101
~51111111111111111111111111111111010 (-6)

مثال

خودتان آزمایش کنید

عملگر بیتی شیفت به چپ جاوا اسکریپت (>>)

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

اعشاردودویی
500000000000000000000000000000101
5 << 100000000000000000000000000001010 (10)

مثال

خودتان آزمایش کنید

عملگر بیتی شیفت به راست در جاوا اسکریپت (<<)

این عملگر شیفت مناسب برای حفظ اعداد علامت دار (+/-) می باشد. یک کپی از چپ ترین بیت به تعداد شیفت از سمت چپ وارد می شود و راست ترین بیت ها به تعداد شیفت از بین می روند.

اعشاردودویی
-511111111111111111111111111111011
-5 >> 111111111111111111111111111111101 (-3)

مثال

خودتان آزمایش کنید

عملگر بیتی شیفت به راست (صفر پرکن) در جاوا اسکریپت (<<<)

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

اعشاردودویی
500000000000000000000000000000101
5 >>> 100000000000000000000000000000010 (2)

مثال

خودتان آزمایش کنید

اعداد دودویی

Binary Numbers

اعداد دودویی با تنها یک مجموعه بیت قابل درک است:

نمایش دودوییعدد در مبنای 10
000000000000000000000000000000011
000000000000000000000000000000102
000000000000000000000000000001004
000000000000000000000000000010008
0000000000000000000000000001000016
0000000000000000000000000010000032
0000000000000000000000000100000064

تنظیم چند بیت دیگر الگوی اعداد دودویی را آشکار می کند:

نمایش دودوییعدد در مبنای 10
000000000000000000000000000001015 (4 + 1)
0000000000000000000000000000110113 (8 + 4 + 1)
0000000000000000000000000010110145 (32 + 8 + 4 + 1)

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

این بدان معناست که منفی یک عدد دو دویی، برابر است با نقیض بیتی (NOT) آن عدد بعلاوه 1 :

نمایش دودوییمقدار ده دهی
000000000000000000000000000001015
11111111111111111111111111111011-5
000000000000000000000000000001106
11111111111111111111111111111010-6
0000000000000000000000000010100040
11111111111111111111111111011000-40

تبدیل ده دهی به دودویی

مثال

خودتان آزمایش کنید

تبدیل دودویی به دهدهی

مثال

خودتان آزمایش کنید

منبع : W3Schools.com


دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *