JS移位运算符

移位运算就是对二进制进行有规律低移位。移位运算可以设计很多奇妙的效果,在图形图像编程中应用广泛。

“<<”运算符

“<<”运算符执行左移位运算。在移位运算过程中,符号位始终保持不变。如果右侧空出位置,则自动填充为 0;超出 32 位的值,则自动丢弃。

把数字 5 向左移动 2 位,则返回值为 20。

console.log(5 << 2);  //返回值20,相当于5*(2的2次方)即5*4

用算式进行演示,如图所示。

  

“>>”运算符

“>>”运算符执行有符号右移位运算。与左移运算操作相反,它把 32 位数字中的所有有效位整体右移,再使用符号位的值填充空位。移动过程中超出的值将被丢弃。

把数值 1000 向右移 8 位,则返回值为 3。

console.log(1000 >> 8);  //返回值3,相当于1000/(2的8次方)即1000/256的向下取整

用算式进行演示,如图所示。

 

 把数值 -1000 向右移 8 位,则返回值为 -4。

console.log(-1000  >> 8);  //返回值 -4

用算式进行演示,如图所示。当符号位值为 1 时,则有效位左侧的空位全部使用 1 进行填充。

 

“>>>”运算符

“>>>”运算符执行五符号右移位运算。它把无符号的 32 位整数所有数位整体右移。对于无符号数或正数右移运算,无符号右移与有符号右移运算的结果是相同的。

下面两行表达式的返回值是相同的。 

console.log(1000 >> 8);  //返回值3
console.log(1000 >>> 8);  //返回值3

对于负数来说,无符号右移将使用 0 来填充所有的空位,同时会把负数作为正数来处理,所得结果会非常大所以,使用无符号右移运算符时要特别小心,避免意外错误。

console.log(-1000 >> 8);  //返回值 -4
console.log(-1000 >>> 8);  //返回值 16777212

用算式进行演示,如图所示。左侧空位不再用符号位的值来填充,而是用 0 来填充。

 

转自:http://c.biancheng.net/view/5471.html

 

推荐这些技术文章:

03-JS运算符

03-JS运算符
运算符(Operators,也翻译为操作符),是发起运算的最简单形式。
我们将运算符大致进行如下分类:
数学运算符(Arithmetic operators)
比较运算符(Comparison operators)
逻辑运算符(Logical operators)
赋值运算符(Assignment operators)
按位运算符(Bitwise operators)
条件(三...

JS中的 && 、|| 、??、?. 运算符

javascript有不少好用的运算符,合理的使用可以大大提高工作效率,以下简单介绍了4种,具体如下:
&&
逻辑与运算(&&)是 AND 布尔操作。只有两个操作数都为 true 时,才返回 true,否则返回 false。具体描述如表所示:

条件一
条件二
结果
演示

true1
true2
true2
1 && 2 => 2...

">>1"与"/2"的区别 (右移1位运算与除以2运算的区别)

原始数据:N
N:非负数时,     >>1和/2的运算结果是一样的。 10>>1=5 ;   10/2=5   0>>1=0 ;0/2=0
N:负数且是偶数,>>1和/2的运算结果是一样的。-10>>1=-5; -10/2=-5  
N:负数且是奇数,>>1和/2的运算结果...

JavaScript中如何获得console.log的值?

问题
请问在JS中是否有办法获取到console.log的值?

最佳回答
写了篇文章:分享一个自定义的 console 类,让你不再纠结JS中的调试代码的兼容

...

使用类做为Dictionary<T,K>的key需什么要求?

问题
<P>&nbsp;</P>

最佳回答
没有要求

...

当元素获得失去焦点时,触发事件

获得焦点后会触发动画:<p><input type="text" /> <span>focusout fire</span></p><p><input type="password" /> <span>focusout fire</span></p>
$("p").focusi...

Verilog中的运算符及其相关基础知识

一、基本运算符
1.算术运算符:加(+)  减( -)   乘(*)    除(/)    取模(%)  求幂(**)。
(1)%是取模运算符:a % b 按照a 和 b中的长度长的补齐。两个参数都为有符号数结果为有符号数,否则为无符号数;
(2)**是求幂运算符:a**b表示a的b次方,即a表示底数,b表示指数;
...

for(var i=0;i<5;i++){setTimeout(()=>{console.log(i)}, 0)} 的几种解法

第一种 闭包

for(var i=;i<5;i++){
(function(i){
setTimeout(()=>{
console.log(i);
}, 0);
})(i)
}
for (var i = 0; i < 5; i++) {
(() => {
var priv...

int i = 1 i >> 32或者i << 32都等于1,为什么?

问题
int i = 1 i >> 32或者i << 32都等于1,为什么?请问有高手能详细回答下?

最佳回答
i >> n 和 i << n,在 n>=32的时候效果等同于n%32(这很好理解,因为i是int,那么移位操作位数最大就是31,如果这里是long的话那么最大就是63),因此...

逻辑运算符使用注意点

expression1 && expression2 如果expression1为false,那么整体结果肯定是false,expression2不会进行运算
||类似&&
expression1 & expression2 无论expression是true还是false,expression2都会运算
|类似&
>> 用符号位填充 ...

文章标题:JS移位运算符
文章链接:https://www.dianjilingqu.com/50933.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>