ဂျော့တိုပ် ဘက် အထိုး
- အရှေ့အပတ် JS လက်တင်ပြောင်းလဲ
- နောက်အပတ် JS ပြင်းထန်သော အစိုးရ
ဂျော့တိုပ် ဘက် အထိုး
တုပ်ကွေး | အမည် | ဖော်ပြ |
---|---|---|
& | 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 将数字存储为 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;
ဂျစ်တိုပ်စ် ဗဟိုဒ် ပြောင်းလဲခြင်း OR (|)
ဘတ်ကိုရီနီယာ အချက်အလက် တစ်ခုခု 1 ဖြစ်ပြီး ဘတ်ကိုရီနီယာ OR အကြောင်းများ 1 ကို ပြန်လည်ပေးသည်။
ဆယ်က်ပတ် | ဘတ်ကိုရီနီယာ |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 | 1 | 00000000000000000000000000000101 (5) |
အကျယ်အဝီး
var x = 5 | 1;
JavaScript ဘတ်ကိုရီနီယာ XOR (^)
ဘတ်ကိုရီနီယာ အချက်အလက် မတူညီချက် အရ ကွဲပြားသည့် အခါ အကြောင်းများ 1 ကို ပြန်လည်ပေးသည်။
ဆယ်က်ပတ် | ဘတ်ကိုရီနီယာ |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 ^ 1 | 00000000000000000000000000000100 (4) |
အကျယ်အဝီး
var x = 5 ^ 1;
JavaScript ဘတ်ကိုရီနီယာ NOT (~)
ဆယ်က်ပတ် | ဘတ်ကိုရီနီယာ |
---|---|
5 | 00000000000000000000000000000101 |
~5 | 11111111111111111111111111111010 (-6) |
အကျယ်အဝီး
var x = ~5;
JavaScript (သင်္ဂြိုလ်ပိုင်း) ဘတ်ကိုရီနီယာ ပြောင်းလဲခြင်း (<<)
သင်္ဂြိုလ်ပိုင်း အပိုင်းများ အရေးယူထား ဖြစ်ပြီး ဘတ်ကိုရီနီယာ ဘေးအနက် ပြောင်းလဲသွားသည်။ ဘတ်ကိုရီနီယာ ဘေးအနက် အပိုင်းများ အရေးယူထား ဖြစ်ပြီး ဘတ်ကိုရီနီယာ ဘေးအနက် ပြောင်းလဲသွားသည်။
ဆယ်က်ပတ် | ဘတ်ကိုရီနီယာ |
---|---|
5 | 00000000000000000000000000000101 |
5 << 1 | 00000000000000000000000000001010 (10) |
အကျယ်အဝီး
var x = 5 << 1;
JavaScript (အရေးယူထား) ဘတ်ကိုရီနီယာ ပြောင်းလဲခြင်း (>>)
ဘတ်ကိုရီနီယာ ဘေးအနက် ပြောင်းလဲခြင်း ကို အသုံးပြုသည်။ ဘတ်ကိုရီနီယာ ဘေးအနက် အပိုင်းများ အရေးယူထား ဖြစ်ပြီး ဘတ်ကိုရီနီယာ ဘေးအနက် ပြောင်းလဲသွားသည်။
ဆယ်က်ပတ် | ဘတ်ကိုရီနီယာ |
---|---|
-5 | 11111111111111111111111111111011 |
-5 >> 1 | 11111111111111111111111111111101 (-3) |
အကျယ်အဝီး
var x = -5 >> 1;
JavaScript (သင်္ဂြိုလ်ပိုင်း) ဘတ်ကိုရီနီယာ ပြောင်းလဲခြင်း (>>>)
သင်္ဂြိုလ်ပိုင်း အပိုင်းများ အရေးယူထား ဖြစ်ပြီး ဘတ်ကိုရီနီယာ ဘေးအနက် ပြောင်းလဲသွားသည်။ ဘတ်ကိုရီနီယာ ဘေးအနက် အပိုင်းများ အရေးယူထား ဖြစ်ပြီး ဘတ်ကိုရီနီယာ ဘေးအနက် ပြောင်းလဲသွားသည်။
ဆယ်က်ပတ် | ဘတ်ကိုရီနီယာ |
---|---|
5 | 00000000000000000000000000000101 |
5 >>> 1 | 00000000000000000000000000000010 (2) |
အကျယ်အဝီး
var x = 5 >>> 1;
32-bit အသေးစိတ်ရှိ အရေးယူထား အနက်အထား (ဘတ်ကိုရီနီယာစက္ခု)
သာ 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 ပြင်းထန်သော အစိုးရ