ဂျော့တိုပ် ဘက် အထိုး

ဂျော့တိုပ် ဘက် အထိုး

တုပ်ကွေး အမည် ဖော်ပြ
& 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);
}

ကျွန်တော်ကို ကြိုးစားလုပ်ပါ