ການການຄວາມຄິດທີ່ບາງບັນຍານ JavaScript

ການການຄວາມຄິດທີ່ບາງບັນຍານ JavaScript

ຕົວເລກການ ຊື່ ການອະທິບາຍ
& 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 ວັດທະນະທີ່ມີສິນລະຄວາມ.

ຫຼັງຈາກການປະຕິບັດການປະຕິບັດວັດແທກພາບ, ຜົນຈະປ່ຽນຄືນເປັນ JavaScript 64 ວັດທະນະທີ.

ຕົວຢ່າງທີ່ທີ່ມີ 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;

ທຳການທີ່ພວກເຮົາຈະທຳ

JavaScript ການປະຕິບັດທີ່ວ່າ

如果数位之一是 1,则位运算 OR 返回 1:

ຕົວແທນ ບິນນິກ
5 00000000000000000000000000000101
1 00000000000000000000000000000001
5 | 1 00000000000000000000000000000101 (5)

ຄວາມຄິດຕາມຄວາມຈິງ

var x = 5 | 1;

ທຳການທີ່ພວກເຮົາຈະທຳ

JavaScript 位运算 XOR (^)

如果数位是不同的,则 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 ຈຳນວນສິບສາມບົດສະນະມັດສະນະຫນັງດີເລີຍ

ການຈັດຕັ້ງອັນດັບຫນັງພຽງຫນິດຂອງຈຳນວນສິບສາມບົດສະນະມັດສະນະຫນັງດີເລີຍຫນັງການເບິ່ງຄວາມລາວ

ການສະແດງວິສະວະດັບສອງ ຄູ່ມູນວິສະວະສິບ
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);
}

ທຳການທີ່ພວກເຮົາຈະທຳ