码迷,mamicode.com
首页 > 其他好文 > 详细

位运算符

时间:2019-09-07 00:49:04      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:zh-cn   ISE   32位   tar   strong   符号   形式   opera   col   

推荐阅读:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators

<<  左移

二进制数左移n位, 就等价于乘以2^n。

例如:14 << 2的值为56(可以算成14*2^2)

 

>>  右移

二进制数右移n位, 就等价于除以2^n。

例如:16 >> 2的值为4 (可以算成16 / 2^2)

 

>>> 无符号右移

先把符号位置0,然后二进制数右移n位。

导致 -1 >>> 0 === 2^32 - 1,详细具体原因可以看我另外一篇博文。

 

~  按位 否

 

二进制数全部取反,包括符号位。
所以 ~1 === -2
我们知道数字都以补码形式存在:
        原码                 反码                 补码
 1 : 000...001 ----> 000...001 -----> 000...001
-2 : 100...010 ----> 111...101 -----> 111...110

~1 就是1的补码全部取反,111...110 和 -2 的补码一致

 

& 按位与

0 & 0=0;  0 & 1=0;  1 & 0=0;  1 & 1=1

 

| 按位或

0 & 0=0;  0 & 1=1;  1 & 0=1;  1 & 1=1

 

^ 异或

0^0=0;   0^1=1;   1^0=1;   1^1=0;

 

关于负数二进制的基础知识:

负数在计算机内部是用补码表示的
例如 -1
1的原码是 0000 0001(js的number是64位双精度浮点数,在按位操作时会转化成32位)
则-1的反码是 1111 1110
补码是 1111 1111

位运算符

标签:zh-cn   ISE   32位   tar   strong   符号   形式   opera   col   

原文地址:https://www.cnblogs.com/amiezhang/p/6731118.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!