اين عملگرهاي بيتي جاوااسكريپت مطابق جدول زيراست.
عملگر | نام عملگر | شــرح |
---|---|---|
& | AND | بيت متقابل1 اگرهر دو يك باشند . |
| | OR | بيت متقابل1< اگرحداقل يكي ازآنها يك باشد . |
^ | XOR | بيت متقابل1 اگر فقط يكي ازآنها يك باشد . |
~ | NOT | مقدارهمه بيت ها معكوس ميشود. |
<< | Zero fill left shift | بيت ها بسمت چپ به تعداد شيفت ميشوندو
و سمت راست بيت ها0 ميشوند |
>> | Signed right shift | شيفت بسمت راست با كپي بيت سمت چپ |
>>> | Zero fill right shift | شيفت سمت راست با پركردن سمت چپ با0 |
Operation | Result | Same as | Result |
---|---|---|---|
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 نگهداري ميشود، براي عمليات بيتي آنها را به سي ودو تبديل كرده و آنرا انجام ميدهد .نتيجه مجدد به64 تبديل ميشود .
در مثال هاي جدول بالا عملوند ها را براي سادگي چهار بيت بدون علامت در نظر گرفته است .بهمين دليل~5=10 شده است .
اما در فرم32 بصورت زير است .
براي عدد صحيح علامت دار بيت سمت چپ آن بعنوان علامت ميباشد.
هنگاميكه عملگرAND بيتي بين دو عملوند تك بيتي انجام ميشود، ذز صورتيكه هر درآنها1 باشند نتيجه1 مي باشد . مطابق جدول زير
operation | Result |
---|---|
0 & 0 | 1 |
0 & 1 | 0 |
1 & 0 | 0 |
1 & 1 | 1 |
مثال ها براي چها بيت
Operation | Result |
---|---|
1111 & 0000 | 0000 |
1111 & 0001 | 0001 |
1111 & 0010 | 0010 |
1111 & 0100 | 0100 |
مثال يك بيتي
Operation | Result |
---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
مثال چهار بيتي
Operation | Result |
---|---|
1111 | 0000 | 0000 |
1111 | 0001 | 0001 |
1111 | 0010 | 0010 |
1111 | 0100 | 0100 |
اگر عملگر^ روي دوعملوند تك بيتي انجام شود، درحالتيكه آنها مخالف باشند نتيجه 1ميباشد .
Operation | Result |
---|---|
0 ^ 0 | 0 |
0 ^ 1 | 1 |
1 ^ 0 | 1 |
1 ^ 1 | 0 |
مثال چهار بيتي
Operation | Result |
---|---|
1111 ^ 0000 | 1111 |
1111 ^ 0001 | 1110 |
1111 ^ 0010 | 1101 |
1111 ^ 0100 | 1011 |
عملگر& بيتي درصوريتكه هردو 1 باشند، 1 برگشت ميشود .
عدددسيمال | عددباينري |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 & 1 | 00000000000000000000000000000001
(1) |
مثال ـ جدول فوق
let x = 5 & 1;
عدددسيمال | عددباينري |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 | 1 | 00000000000000000000000000000101
(5) |
مثال ـ جدول فوق
let x = 5 | 1;
در صورتيكه نتيجهXOR بيتي يك ميشود، كه بيتها متفاوت باشند .
عدددسيمال | عددباينري |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 ^ 1 | 00000000000000000000000000000100
(4) |
مثال ـ جدول فوق
let x = 5 ^ 1;
عدددسيمال | عددباينري |
---|---|
5 | 00000000000000000000000000000101 |
~5 | 11111111111111111111111111111010
(-6) |
مثال ـNOT (~) بيتي
let x = ~5;
اين شيفت بسمت چپ بوده وچند بيت شيفتي راست با0 پرمشوند .شيف چپ جابجائي بيت بسمت چپ ميباشده، و بيت چپ خارج ميشود وراست با0 پرميشود .
عدددسيمال | عددباينري |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 << 1 | 00000000000000000000000000001010
(10) |
مثال ـ شيف چپ
let x = 5 << 1;
با شيف رايت بيت هاي بسمت راست جابجا ميشوند، اما بيت سمت چپ با بيت علامت پرميشود وبيتهاي راست خارج ميشوند .بيت علامت اولين بيت سمت چپ است.
عدددسيمال | عددباينري |
---|---|
-5 | 11111111111111111111111111111011 |
-5>>1 | 11111111111111111111111111111101
(-3) |
مثال ـ شيفت راست باعلامت
let x = -5 >> 1;
دراين نوع شيفت بيت هاي بسمت راست جابجا شده وسمت چپ با0 پرميشود، بيت سمت راست خارج ميشود.
عدددسيمال | عددباينري |
---|---|
5 | 00000000000000000000000000000101 |
5 >>> 1 | 00000000000000000000000000000010
(2) |
مثال ـ شيفت راست بدون علامت
let x = 5 >>> 1;
اعداد باينري با تنها يك مجموع بيت براحتي قابل درك هستند.
نمايش باينري | مقدار دسيمال |
---|---|
00000000000000000000000000000001 | 1 |
000000000000000000000000000000010 | 2 |
000000000000000000000000000000011 | 3 |
00000000000000000000000000000100 | 4 |
00000000000000000000000000001000 | 8 |
00000000000000000000000000010000 | 16 |
00000000000000000000000000100000 | 16 |
00000000000000000000000001000000 | 32 |
در جدول زير حاصل چند عدد باينري را نشان ميدهد.
Binary Representation | Decimal value |
---|---|
00000000000000000000000000000101 | 5 (4 + 1) |
00000000000000000000000000001101 | 13 (8 + 4 + 1) |
00000000000000000000000000101101 | 45 (32 + 8 + 4 + 1) |
اعداد باينري منفي بصورت مكمل دو ذخيره ميشوند .بدين صورت عدد مثبت آن بصورت باينري نوشته همه بيت مقدارشان برعكس شده يعنيNOT ميشوندو حا صل با يك جمع ميشود .
عددباينري | عدددسيمال |
---|---|
00000000000000000000000000000101 | 5 |
11111111111111111111111111111011 | -5 |
00000000000000000000000000000110 | 6 |
11111111111111111111111111111010 | -6 |
00000000000000000000000000101000 | 40 |
11111111111111111111111111011000 | -40 |
مثال ـ تبديل دسيمال به باينري
function dec2bin(dec){ return (dec >>> 0).toString(2); }
مثال ـ تبديل باينري بدسيمال
function bin2dec(bin){ return parseInt(bin, 2).toString(10); }