ECMAScript λÔËËã·û

λÔËËã·ûÊÇÔÚÊý×ֵײ㣨¼´±íʾÊý×ÖµÄ 32 ¸öÊý룩½øÐвÙ×÷µÄ¡£

ÖØÎÂÕûÊý

ECMAScript ÕûÊýÓÐÁ½ÖÖÀàÐÍ£¬¼´ÓзûºÅÕûÊý£¨ÔÊÐíÓÃÕýÊýºÍ¸ºÊý£©ºÍÎÞ·ûºÅÕûÊý£¨Ö»ÔÊÐíÓÃÕýÊý£©¡£ÔÚ ECMAScript ÖУ¬ËùÓÐÕûÊý×ÖÃæÁ¿Ä¬È϶¼ÊÇÓзûºÅÕûÊý£¬ÕâÒâζ×ÅÊ²Ã´ÄØ£¿

ÓзûºÅÕûÊýʹÓà 31 λ±íʾÕûÊýµÄÊýÖµ£¬ÓÃµÚ 32 λ±íʾÕûÊýµÄ·ûºÅ£¬0 ±íʾÕýÊý£¬1 ±íʾ¸ºÊý¡£ÊýÖµ·¶Î§´Ó -2147483648 µ½ 2147483647¡£

¿ÉÒÔÒÔÁ½ÖÖ²»Í¬µÄ·½Ê½´æ´¢¶þ½øÖÆÐÎʽµÄÓзûºÅÕûÊý£¬Ò»ÖÖÓÃÓÚ´æ´¢ÕýÊý£¬Ò»ÖÖÓÃÓÚ´æ´¢¸ºÊý¡£ÕýÊýÊÇÒÔÕæ¶þ½øÖÆÐÎʽ´æ´¢µÄ£¬Ç° 31 λÖеÄÿһλ¶¼±íʾ 2 µÄÃÝ£¬´ÓµÚ 1 λ£¨Î» 0£©¿ªÊ¼£¬±íʾ 20£¬µÚ 2 λ£¨Î» 1£©±íʾ 21¡£Ã»Óõ½µÄλÓà 0 Ìî³ä£¬¼´ºöÂÔ²»¼Æ¡£ÀýÈ磬ÏÂͼչʾµÄÊÇÊý 18 µÄ±íʾ·¨¡£

32 λ¶þ½øÖƱíʾµÄÓзûºÅÕûÊý

18 µÄ¶þ½øÖư汾ֻÓÃÁËǰ 5 룬ËüÃÇÊÇÕâ¸öÊý×ÖµÄÓÐЧλ¡£°ÑÊý×Öת»»³É¶þ½øÖÆ×Ö·û´®£¬¾ÍÄÜ¿´µ½ÓÐЧλ£º

var iNum = 18;
alert(iNum.toString(2));	//Êä³ö "10010"

Õâ¶Î´úÂëÖ»Êä³ö "10010"£¬¶ø²»ÊÇ 18 µÄ 32 λ±íʾ¡£ÆäËûµÄÊýλ²¢²»ÖØÒª£¬ÒòΪ½öʹÓÃǰ 5 λ¼´¿ÉÈ·¶¨Õâ¸öÊ®½øÖÆÊýÖµ¡£ÈçÏÂͼËùʾ£º

5 λ¶þ½øÖƱíʾµÄÕûÊý 18

¸ºÊýÒ²´æ´¢Îª¶þ½øÖÆ´úÂ룬²»¹ý²ÉÓõÄÐÎʽÊǶþ½øÖƲ¹Âë¡£¼ÆËãÊý×Ö¶þ½øÖƲ¹ÂëµÄ²½ÖèÓÐÈý²½£º

  1. È·¶¨¸ÃÊý×ֵķǸº°æ±¾µÄ¶þ½øÖƱíʾ£¨ÀýÈ磬Ҫ¼ÆËã -18µÄ¶þ½øÖƲ¹Â룬Ê×ÏÈҪȷ¶¨ 18 µÄ¶þ½øÖƱíʾ£©
  2. ÇóµÃ¶þ½øÖÆ·´Â룬¼´Òª°Ñ 0 Ìæ»»Îª 1£¬°Ñ 1 Ìæ»»Îª 0
  3. ÔÚ¶þ½øÖÆ·´ÂëÉÏ¼Ó 1

Ҫȷ¶¨ -18 µÄ¶þ½øÖƱíʾ£¬Ê×ÏȱØÐëµÃµ½ 18 µÄ¶þ½øÖƱíʾ£¬ÈçÏÂËùʾ£º

0000 0000 0000 0000 0000 0000 0001 0010

½ÓÏÂÀ´£¬¼ÆËã¶þ½øÖÆ·´Â룬ÈçÏÂËùʾ£º

1111 1111 1111 1111 1111 1111 1110 1101

×îºó£¬ÔÚ¶þ½øÖÆ·´ÂëÉÏ¼Ó 1£¬ÈçÏÂËùʾ£º

1111 1111 1111 1111 1111 1111 1110 1101
                                      1
---------------------------------------
1111 1111 1111 1111 1111 1111 1110 1110

Òò´Ë£¬-18 µÄ¶þ½øÖƱíʾ¼´ 1111 1111 1111 1111 1111 1111 1110 1110¡£¼Çס£¬ÔÚ´¦ÀíÓзûºÅÕûÊýʱ£¬¿ª·¢Õß²»ÄÜ·ÃÎÊ 31 λ¡£

ÓÐȤµÄÊÇ£¬°Ñ¸ºÕûÊýת»»³É¶þ½øÖÆ×Ö·û´®ºó£¬ECMAScript ²¢²»ÒÔ¶þ½øÖƲ¹ÂëµÄÐÎʽÏÔʾ£¬¶øÊÇÓÃÊý×Ö¾ø¶ÔÖµµÄ±ê×¼¶þ½øÖÆ´úÂëÇ°Ãæ¼Ó¸ººÅµÄÐÎʽÊä³ö¡£ÀýÈ磺

var iNum = -18;
alert(iNum.toString(2));	//Êä³ö "-10010"

Õâ¶Î´úÂëÊä³öµÄÊÇ "-10010"£¬¶ø·Ç¶þ½øÖƲ¹Â룬ÕâÊÇΪ±ÜÃâ·ÃÎÊλ 31¡£ÎªÁ˼ò±ã£¬ECMAScript ÓÃÒ»ÖÖ¼òµ¥µÄ·½Ê½´¦ÀíÕûÊý£¬Ê¹µÃ¿ª·¢Õß²»±Ø¹ØÐÄËüÃǵÄÓ÷¨¡£

ÁíÒ»·½Ã棬ÎÞ·ûºÅÕûÊý°Ñ×îºóһλ×÷ΪÁíÒ»¸öÊýλ´¦Àí¡£ÔÚÕâÖÖģʽÖУ¬µÚ 32 λ²»±íʾÊý×ֵķûºÅ£¬¶øÊÇÖµ 231¡£ÓÉÓÚÕâ¸ö¶îÍâµÄ룬ÎÞ·ûºÅÕûÊýµÄÊýÖµ·¶Î§Îª 0 µ½ 4294967295¡£¶ÔÓÚСÓÚ 2147483647 µÄÕûÊýÀ´Ëµ£¬ÎÞ·ûºÅÕûÊý¿´À´ÓëÓзûºÅÕûÊýÒ»Ñù£¬¶ø´óÓÚ 2147483647 µÄÕûÊýÔòҪʹÓÃλ 31£¨ÔÚÓзûºÅÕûÊýÖУ¬Õâһλ×ÜÊÇ 0£©¡£

°ÑÎÞ·ûºÅÕûÊýת»»³É×Ö·û´®ºó£¬Ö»·µ»ØËüÃǵÄÓÐЧλ¡£

×¢Ò⣺ËùÓÐÕûÊý×ÖÃæÁ¿¶¼Ä¬Èϴ洢ΪÓзûºÅÕûÊý¡£Ö»ÓÐ ECMAScript µÄλÔËËã·û²ÅÄÜ´´½¨ÎÞ·ûºÅÕûÊý¡£

λÔËËã NOT

λÔËËã NOT ÓÉ·ñ¶¨ºÅ£¨~£©±íʾ£¬ËüÊÇ ECMAScript ÖÐΪÊý²»¶àµÄÓë¶þ½øÖÆËãÊõÓйصÄÔËËã·ûÖ®Ò»¡£

λÔËËã NOT ÊÇÈý²½µÄ´¦Àí¹ý³Ì£º

  1. °ÑÔËËãÊýת»»³É 32 λÊý×Ö
  2. °Ñ¶þ½øÖÆÊýת»»³ÉËüµÄ¶þ½øÖÆ·´Âë
  3. °Ñ¶þ½øÖÆÊýת»»³É¸¡µãÊý

ÀýÈ磺

var iNum1 = 25;		//25 µÈÓÚ 00000000000000000000000000011001
var iNum2 = ~iNum1;	//ת»»Îª 11111111111111111111111111100110
alert(iNum2);		//Êä³ö "-26"

λÔËËã NOT ʵÖÊÉÏÊǶÔÊý×ÖÇ󸺣¬È»ºó¼õ 1£¬Òò´Ë 25 ±ä -26¡£ÓÃÏÂÃæµÄ·½·¨Ò²¿ÉÒԵõ½Í¬ÑùµÄ·½·¨£º

var iNum1 = 25;
var iNum2 = -iNum1 -1;
alert(iNum2);	//Êä³ö -26

λÔËËã AND

λÔËËã AND Óɺͺţ¨&£©±íʾ£¬Ö±½Ó¶ÔÊý×ֵĶþ½øÖÆÐÎʽ½øÐÐÔËËã¡£Ëü°Ñÿ¸öÊý×ÖÖеÄÊýλ¶ÔÆë£¬È»ºóÓÃÏÂÃæµÄ¹æÔò¶ÔͬһλÖÃÉϵÄÁ½¸öÊýλ½øÐÐ AND ÔËË㣺

µÚÒ»¸öÊý×ÖÖеÄÊýλ µÚ¶þ¸öÊý×ÖÖеÄÊýλ ½á¹û
1 1 1
1 0 0
0 1 0
0 0 0

ÀýÈ磬Ҫ¶ÔÊý×Ö 25 ºÍ 3 ½øÐÐ AND ÔËË㣬´úÂëÈçÏÂËùʾ£º

var iResult = 25 & 3;
alert(iResult);	//Êä³ö "1"

25 ºÍ 3 ½øÐÐ AND ÔËËãµÄ½á¹ûÊÇ 1¡£ÎªÊ²Ã´£¿·ÖÎöÈçÏ£º

 25 = 0000 0000 0000 0000 0000 0000 0001 1001
  3 = 0000 0000 0000 0000 0000 0000 0000 0011
---------------------------------------------
AND = 0000 0000 0000 0000 0000 0000 0000 0001

¿ÉÒÔ¿´³ö£¬ÔÚ 25 ºÍ 3 ÖУ¬Ö»ÓÐÒ»¸öÊýλ£¨Î» 0£©´æ·ÅµÄ¶¼ÊÇ 1£¬Òò´Ë£¬ÆäËûÊýλÉú³ÉµÄ¶¼ÊÇ 0£¬ËùÒÔ½á¹ûΪ 1¡£

λÔËËã OR

λÔËËã OR ÓÉ·ûºÅ£¨|£©±íʾ£¬Ò²ÊÇÖ±½Ó¶ÔÊý×ֵĶþ½øÖÆÐÎʽ½øÐÐÔËËã¡£ÔÚ¼ÆËãÿλʱ£¬OR ÔËËã·û²ÉÓÃÏÂÁйæÔò£º

µÚÒ»¸öÊý×ÖÖеÄÊýλ µÚ¶þ¸öÊý×ÖÖеÄÊýλ ½á¹û
1 1 1
1 0 1
0 1 1
0 0 0

ÈÔȻʹÓà AND ÔËËã·ûËùÓõÄÀý×Ó£¬¶Ô 25 ºÍ 3 ½øÐÐ OR ÔËË㣬´úÂëÈçÏ£º

var iResult = 25 | 3;
alert(iResult);	//Êä³ö "27"

25 ºÍ 3 ½øÐÐ OR ÔËËãµÄ½á¹ûÊÇ 27£º

25 = 0000 0000 0000 0000 0000 0000 0001 1001
 3 = 0000 0000 0000 0000 0000 0000 0000 0011
--------------------------------------------
OR = 0000 0000 0000 0000 0000 0000 0001 1011

¿ÉÒÔ¿´³ö£¬ÔÚÁ½¸öÊý×ÖÖУ¬¹²ÓÐ 4 ¸öÊýλ´æ·ÅµÄÊÇ 1£¬ÕâЩÊýλ±»´«µÝ¸ø½á¹û¡£¶þ½øÖÆ´úÂë 11011 µÈÓÚ 27¡£

λÔËËã XOR

λÔËËã XOR ÓÉ·ûºÅ£¨^£©±íʾ£¬µ±È»£¬Ò²ÊÇÖ±½Ó¶Ô¶þ½øÖÆÐÎʽ½øÐÐÔËËã¡£XOR ²»Í¬ÓÚ OR£¬µ±Ö»ÓÐÒ»¸öÊýλ´æ·ÅµÄÊÇ 1 ʱ£¬Ëü²Å·µ»Ø 1¡£ÕæÖµ±íÈçÏ£º

µÚÒ»¸öÊý×ÖÖеÄÊýλ µÚ¶þ¸öÊý×ÖÖеÄÊýλ ½á¹û
1 1 0
1 0 1
0 1 1
0 0 0

¶Ô 25 ºÍ 3 ½øÐÐ XOR ÔËË㣬´úÂëÈçÏ£º

var iResult = 25 ^ 3;
alert(iResult);	//Êä³ö "26"

25 ºÍ 3 ½øÐÐ XOR ÔËËãµÄ½á¹ûÊÇ 26£º

 25 = 0000 0000 0000 0000 0000 0000 0001 1001
  3 = 0000 0000 0000 0000 0000 0000 0000 0011
---------------------------------------------
XOR = 0000 0000 0000 0000 0000 0000 0001 1010

¿ÉÒÔ¿´³ö£¬ÔÚÁ½¸öÊý×ÖÖУ¬¹²ÓÐ 4 ¸öÊýλ´æ·ÅµÄÊÇ 1£¬ÕâЩÊýλ±»´«µÝ¸ø½á¹û¡£¶þ½øÖÆ´úÂë 11010 µÈÓÚ 26¡£

×óÒÆÔËËã

×óÒÆÔËËãÓÉÁ½¸öСÓںűíʾ£¨<<£©¡£Ëü°ÑÊý×ÖÖеÄËùÓÐÊýλÏò×óÒÆ¶¯Ö¸¶¨µÄÊýÁ¿¡£ÀýÈ磬°ÑÊý×Ö 2£¨µÈÓÚ¶þ½øÖÆÖÐµÄ 10£©×óÒÆ 5 룬½á¹ûΪ 64£¨µÈÓÚ¶þ½øÖÆÖÐµÄ 1000000£©£º

var iOld = 2;		//µÈÓÚ¶þ½øÖÆ 10
var iNew = iOld << 5;	//µÈÓÚ¶þ½øÖÆ 1000000 Ê®½øÖÆ 64

×¢Ò⣺ÔÚ×óÒÆÊýλʱ£¬Êý×ÖÓұ߶à³ö 5 ¸ö¿Õλ¡£×óÒÆÔËËãÓà 0 Ìî³äÕâЩ¿Õλ£¬Ê¹½á¹û³ÉΪÍêÕûµÄ 32 λÊý×Ö¡£

Êý×Ö 2 ½øÐÐ×óÒÆÔËËã

×¢Ò⣺×óÒÆÔËËã±£ÁôÊý×ֵķûºÅλ¡£ÀýÈ磬Èç¹û°Ñ -2 ×óÒÆ 5 룬µÃµ½µÄÊÇ -64£¬¶ø²»ÊÇ 64¡£¡°·ûºÅÈÔÈ»´æ´¢ÔÚµÚ 32 λÖÐÂ𣿡±Êǵ쬲»¹ýÕâÔÚ ECMAScript ºǫ́½øÐУ¬¿ª·¢Õß²»ÄÜÖ±½Ó·ÃÎÊµÚ 32 ¸öÊýλ¡£¼´Ê¹Êä³ö¶þ½øÖÆ×Ö·û´®ÐÎʽµÄ¸ºÊý£¬ÏÔʾµÄÒ²ÊǸººÅÐÎʽ£¨ÀýÈ磬-2 ½«ÏÔʾ -10¡££©

ÓзûºÅÓÒÒÆÔËËã

ÓзûºÅÓÒÒÆÔËËã·ûÓÉÁ½¸ö´óÓںűíʾ£¨>>£©¡£Ëü°Ñ 32 λÊý×ÖÖеÄËùÓÐÊýλÕûÌåÓÒÒÆ£¬Í¬Ê±±£Áô¸ÃÊýµÄ·ûºÅ£¨ÕýºÅ»ò¸ººÅ£©¡£ÓзûºÅÓÒÒÆÔËËã·ûÇ¡ºÃÓë×óÒÆÔËËãÏà·´¡£ÀýÈ磬°Ñ 64 ÓÒÒÆ 5 룬½«±äΪ 2£º

var iOld = 64;		//µÈÓÚ¶þ½øÖÆ 1000000
var iNew = iOld >> 5;	//µÈÓÚ¶þ½øÖÆ 10 Ê®½øÖÆ 2

ͬÑù£¬Òƶ¯Êýλºó»áÔì³É¿Õλ¡£Õâ´Î£¬¿ÕλλÓÚÊý×ÖµÄ×ó²à£¬µ«Î»ÓÚ·ûºÅλ֮ºó¡£ECMAScript Ó÷ûºÅλµÄÖµÌî³äÕâЩ¿Õ룬´´½¨ÍêÕûµÄÊý×Ö£¬ÈçÏÂͼËùʾ£º

Êý×Ö 64 ½øÐÐÓзûºÅÓÒÒÆÔËËã

ÎÞ·ûºÅÓÒÒÆÔËËã

ÎÞ·ûºÅÓÒÒÆÔËËã·ûÓÉÈý¸ö´óÓںţ¨>>>£©±íʾ£¬Ëü½«ÎÞ·ûºÅ 32 λÊýµÄËùÓÐÊýλÕûÌåÓÒÒÆ¡£¶ÔÓÚÕýÊý£¬ÎÞ·ûºÅÓÒÒÆÔËËãµÄ½á¹ûÓëÓзûºÅÓÒÒÆÔËËãÒ»Ñù¡£

ÓÃÓзûºÅÓÒÒÆÔËËãÖеÄÀý×Ó£¬°Ñ 64 ÓÒÒÆ 5 룬½«±äΪ 2£º

var iOld = 64;		//µÈÓÚ¶þ½øÖÆ 1000000
var iNew = iOld >>> 5;	//µÈÓÚ¶þ½øÖÆ 10 Ê®½øÖÆ 2

¶ÔÓÚ¸ºÊý£¬Çé¿ö¾Í²»Í¬ÁË¡£

ÎÞ·ûºÅÓÒÒÆÔËËãÓà 0 Ìî³äËùÓпÕλ¡£¶ÔÓÚÕýÊý£¬ÕâÓëÓзûºÅÓÒÒÆÔËËãµÄ²Ù×÷Ò»Ñù£¬¶ø¸ºÊýÔò±»×÷ΪÕýÊýÀ´´¦Àí¡£

ÓÉÓÚÎÞ·ûºÅÓÒÒÆÔËËãµÄ½á¹ûÊÇÒ»¸ö 32 λµÄÕýÊý£¬ËùÒÔ¸ºÊýµÄÎÞ·ûºÅÓÒÒÆÔËËãµÃµ½µÄ×ÜÊÇÒ»¸ö·Ç³£´óµÄÊý×Ö¡£ÀýÈ磬Èç¹û°Ñ -64 ÓÒÒÆ 5 룬½«µÃµ½ 134217726¡£ÈçºÎµÃµ½ÕâÖÖ½á¹ûµÄÄØ£¿

ҪʵÏÖÕâÒ»µã£¬ÐèÒª°ÑÕâ¸öÊý×Öת»»³ÉÎÞ·ûºÅµÄµÈ¼ÛÐÎʽ£¨¾¡¹Ü¸ÃÊý×Ö±¾Éí»¹ÊÇÓзûºÅµÄ£©£¬¿ÉÒÔͨ¹ýÒÔÏ´úÂë»ñµÃÕâÖÖÐÎʽ£º

var iUnsigned64 = -64 >>> 0;

È»ºó£¬Óà Number ÀàÐ굀 toString() »ñÈ¡ËüµÄÕæÕýµÄλ±íʾ£¬²ÉÓõĻùΪ 2£º

alert(iUnsigned64.toString(2));

Õ⽫Éú³É 11111111111111111111111111000000£¬¼´ÓзûºÅÕûÊý -64 µÄ¶þ½øÖƲ¹Âë±íʾ£¬²»¹ýËüµÈÓÚÎÞ·ûºÅÕûÊý 4294967232¡£

³öÓÚÕâÖÖÔ­Òò£¬Ê¹ÓÃÎÞ·ûºÅÓÒÒÆÔËËã·ûҪСÐÄ¡£

VUE