JavaScript Bitwise လုပ်ဆောင်ချက်များ
JavaScript Bitwise အော်ပရေတာများ
Operator | Name | Description |
---|---|---|
& | AND | Sets each bit to 1 if both bits are 1 |
| | OR | Sets each bit to 1 if one of two bits is 1 |
^ | XOR | Sets each bit to 1 if only one of two bits is 1 |
~ | NOT | Inverts all the bits |
<< | Zero fill left shift | Shifts left by pushing zeros in from the right and let the leftmost bits fall off |
>> | Signed right shift | Shifts right by pushing copies of the leftmost bit in from the left, and let the rightmost bits fall off |
>>> | Zero fill right shift | Shifts right by pushing zeros in from the left, and let the rightmost bits fall off |
ဥပမာများ
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 |
JavaScript သည် 32 bits Bitwise Operands ကိုအသုံးပြုသည်။
JavaScript သည် နံပါတ်များကို 64 bits floating point နံပါတ်များအဖြစ် သိမ်းဆည်းထားသော်လည်း bitwise လုပ်ဆောင်ချက်အားလုံးကို 32 bits binary နံပါတ်များဖြင့် လုပ်ဆောင်ပါသည်။
အနည်းငယ်သော လုပ်ဆောင်ချက်ကို မလုပ်ဆောင်မီ၊ JavaScript သည် နံပါတ်များကို 32 bits ရေးထိုးထားသော ကိန်းပြည့်များအဖြစ်သို့ ပြောင်းလဲပေးပါသည်။
bitwise လုပ်ဆောင်ချက်ကို လုပ်ဆောင်ပြီးနောက်၊ ရလဒ်ကို 64 bits JavaScript နံပါတ်များသို့ ပြန်ပြောင်းသည်။
အထက်ဖော်ပြပါ ဥပမာများသည် 4 bits လက်မှတ်မထိုးထားသော binary နံပါတ်များကို အသုံးပြုသည်။ ဒီအတွက်ကြောင့် ~ 5 မှ 10 သို့ပြန်လာသည်။
JavaScript သည် 32 bits signed integers ကိုအသုံးပြုသောကြောင့်၊ ၎င်းသည် 10 သို့ပြန်မလာပါ။ ၎င်းသည် -6 သို့ပြန်သွားပါမည်။
0000000000000000000000000000101 (၅)၊
111111111111111111111111111010 (~5 = -6)
ရေးထိုးထားသော ကိန်းပြည့်သည် အနှုတ်လက္ခဏာအဖြစ် ဘယ်ဘက်ဆုံးဘစ်ကို အသုံးပြုသည်။
နည်းနည်းချင်း AND
ဘစ်တစ်စုံတွင် တစ်နည်းနည်းနှင့် AND ကိုလုပ်ဆောင်သောအခါ၊ ဘစ်နှစ်ခုစလုံးသည် 1 ဖြစ်ပါက 1 ပြန်ပေးသည်။
လည်ပတ်မှု | ရလဒ် |
---|---|
0 & 0 | ၀ယ်တယ်။ |
0 & 1 | ၀ယ်တယ်။ |
1 & 0 | ၀ယ်တယ်။ |
1 & 1 | ၁ |
လည်ပတ်မှု | ရလဒ် |
---|---|
1111 & 0000 | ၀၀၀၀ |
၁၁၁၁ & ၀၀၀၁ | ၀၀၀၁ |
၁၁၁၁ & ၀၀၁၀ | ၀၀၁၀ |
၁၁၁၁ & ၀၁၀၀ | ၀၁၀၀ |
နည်းနည်းချင်း OR
ဘစ်တစ်စုံတွင် တစ်နည်းနည်းဖြင့် OR ကို လုပ်ဆောင်သောအခါ၊ ဘစ်များထဲမှ တစ်ခုသည် 1 ဖြစ်ပါက 1 ကို ပြန်ပေးသည်-
လည်ပတ်မှု | ရလဒ် |
---|---|
0 | ၀ယ်တယ်။ | ၀ယ်တယ်။ |
0 | ၁ | ၁ |
၁ | ၀ယ်တယ်။ | ၁ |
၁ | ၁ | ၁ |
လည်ပတ်မှု | ရလဒ် |
---|---|
1111 | ၀၀၀၀ | ၁၁၁၁ |
1111 | ၀၀၀၁ | ၁၁၁၁ |
1111 | ၀၀၁၀ | ၁၁၁၁ |
1111 | ၀၁၀၀ | ၁၁၁၁ |
နည်းနည်းချင်း XOR
bits တစ်စုံတွင် XOR ကို တစ်နည်းနည်းဖြင့် လုပ်ဆောင်သောအခါ၊ bits များ ကွဲပြားပါက 1 ကို ပြန်ပေးသည်-
လည်ပတ်မှု | ရလဒ် |
---|---|
၀^၀ | ၀ယ်တယ်။ |
၀^၁ | ၁ |
၁^၀ | ၁ |
၁^၁ | ၀ယ်တယ်။ |
လည်ပတ်မှု | ရလဒ် |
---|---|
1111^0000 | ၁၁၁၁ |
1111^0001 | ၁၁၁၀ |
1111^0010 | ၁၁၀၁ |
၁၁၁၁^၀၁၀၀ | ၁၀၁၁ |
JavaScript နှင့် အနည်းငယ်မျှသော AND (&)
ဘစ်နှစ်ခုလုံးသည် 1 ဖြစ်မှသာ 1 ကို bitwise AND ပြန်ပေးသည် ။
ဒဿမ | ဒွိ |
---|---|
၅ | 000000000000000000000000000101 |
၁ | 000000000000000000000000000001 |
5 & 1 | 0000000000000000000000000000001 (၁)၊ |
ဥပမာ
let x = 5 & 1;
JavaScript Bitwise သို့မဟုတ် (|)
ဘစ်များထဲမှ တစ်ခုသည် 1 ဖြစ်ပါက 1 သို့ ပြန်ပေးသည်-
ဒဿမ | ဒွိ |
---|---|
၅ | 000000000000000000000000000101 |
၁ | 000000000000000000000000000001 |
5 | ၁ | 0000000000000000000000000000101 (၅)၊ |
ဥပမာ
let x = 5 | 1;
JavaScript Bitwise XOR (^)
bitwise XOR သည် bit များ ကွဲပြားပါက 1 ကို ပြန်ပေးသည်-
ဒဿမ | ဒွိ |
---|---|
၅ | 000000000000000000000000000101 |
၁ | 000000000000000000000000000001 |
၅^၁ | 0000000000000000000000000000100 (၄)၊ |
ဥပမာ
let x = 5 ^ 1;
JavaScript သည် အနည်းငယ်မဟုတ်ပါ (~)
ဒဿမ | ဒွိ |
---|---|
၅ | 000000000000000000000000000101 |
~၅ | 111111111111111111111111111010 (စာ-၆)၊ |
ဥပမာ
let x = ~5;
JavaScript (Zero Fill) Bitwise Left Shift (<<)
၎င်းသည် သုညဖြည့်စွက်ဘယ်ဘက်ပြောင်းမှုဖြစ်သည်။ တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော သုညဘစ်များကို ညာဘက်မှ တွန်းထုတ်ပြီး ဘယ်ဘက်စွန်းမှ ပြုတ်ကျသည်-
ဒဿမ | ဒွိ |
---|---|
၅ | 000000000000000000000000000101 |
5 << ၁ | 0000000000000000000000000001010 (၁၀)၊ |
ဥပမာ
let x = 5 << 1;
JavaScript (Sign Preserving) Bitwise Right Shift (>>)
ဒါဟာ မှန်ကန်တဲ့အပြောင်းအရွှေ့ကို ထိန်းသိမ်းတဲ့ လက္ခဏာပါ။ ဘယ်ဘက်စွန်းမှ မိတ္တူများကို ဘယ်ဘက်မှ တွန်းထုတ်ပြီး ညာဘက်ဆုံးဘစ်များ ပြုတ်ကျသည်-
ဒဿမ | ဒွိ |
---|---|
စာ-၅ | 111111111111111111111111111011 |
-5 >> ၁ | 111111111111111111111111111101 (စာ-၃)၊ |
ဥပမာ
let x = -5 >> 1;
JavaScript (Zero Fill) Right Shift (>>>)
၎င်းသည် သုညဖြည့်စွက် ညာဘက်ပြောင်းမှုဖြစ်သည်။ တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော သုညဘစ်များကို ဘယ်ဘက်မှ တွန်းထုတ်ပြီး ညာဘက်ဆုံးဘစ်များ ပြုတ်ကျသည်-
ဒဿမ | ဒွိ |
---|---|
၅ | 000000000000000000000000000101 |
၅ >>> ၁ | 0000000000000000000000000000010 (၂)၊ |
ဥပမာ
let x = 5 >>> 1;
Binary နံပါတ်များ
တစ်ခုတည်းသောဘစ်အစုံပါသော Binary ဂဏန်းများသည် နားလည်ရလွယ်ကူသည်-
Binary ကိုယ်စားပြုမှု | ဒဿမတန်ဖိုး |
---|---|
000000000000000000000000000001 | ၁ |
000000000000000000000000000010 | ၂ |
0000000000000000000000000000100 | ၄ |
0000000000000000000000000001000 | ၈ |
0000000000000000000000000010000 | ၁၆ |
000000000000000000000000100000 | ၃၂ |
0000000000000000000000001000000 | ၆၄ |
နောက်ထပ် bits အနည်းငယ်ကို သတ်မှတ်ခြင်းသည် binary ပုံစံကို ဖော်ပြသည်-
Binary ကိုယ်စားပြုမှု | ဒဿမတန်ဖိုး |
---|---|
000000000000000000000000000101 | ၅ (၄+၁)၊ |
0000000000000000000000000001101 | ၁၃ (၈+၄+၁)၊ |
0000000000000000000000000101101 | ၄၅ (၃၂+၈+၄+၁)၊ |
JavaScript binary နံပါတ်များကို နှစ်ခု၏ ဖြည့်စွက်ဖော်မတ်တွင် သိမ်းဆည်းထားသည်။
ဆိုလိုသည်မှာ အနှုတ်ကိန်းသည် ဂဏန်းပေါင်း 1 ၏ အနည်းငယ်မျှသော မဟုတ်ကြောင်း ဆိုလိုသည်-
Binary ကိုယ်စားပြုမှု | ဒဿမတန်ဖိုး |
---|---|
000000000000000000000000000101 | ၅ |
111111111111111111111111111011 | စာ-၅ |
000000000000000000000000000110 | ၆ |
111111111111111111111111111010 | စာ-၆ |
0000000000000000000000000101000 | ၄၀ |
1111111111111111111111111011000 | စာ-၄၀ |
Decimal သို့ Binary ပြောင်းခြင်း။
ဥပမာ
function dec2bin(dec){
return (dec >>> 0).toString(2);
}
Binary ကို Decimal သို့ပြောင်းခြင်း။
ဥပမာ
function bin2dec(bin){
return parseInt(bin, 2).toString(10);
}