ECMAScript 赋值运算符, 简单的赋值运算符由等号 (=) 实现, 只是把等号右边的值赋予等号左边的变量.
算术运算以及复合赋值运算符:
1, 乘法 / 赋值(*=)
2, 除法 / 赋值(/=)
3, 取模 / 赋值(%=)
4, 加法 / 赋值(+=)
5, 减法 / 赋值(-=)
6, 左移 / 赋值(<<=)
7, 有符号右移 / 赋值(>>=)
8, 无符号右移 / 赋值(>>>=)
下面咱们单独拿出来解说一下:
一, 乘法 / 赋值(*=)
- var num1 = 10;
- console.log(num1 = 3);//30
数学公式: num1 = num1 3
二, 除法 / 赋值(/=)
- var num2 = 30;
- console.log(num2 /= 2);//15
数学公式: num2 = num2 / 2
三, 取模 / 赋值(%=)
- var num3 = 32;
- console.log(num3 %= 5);//2
数学公式: num3 = num3 % 5
四, 加法 / 赋值(+=)
- var num4 = 12;
- console.log(num4 += 5);//17
数学公式: num4 = num4 + 5
五, 减法 / 赋值(-=)
- var num5 = 12;
- console.log(num5 -= 5);//7
数学公式: num5 = num5 - 5
六, 左移 / 赋值(<<=), 正负数操作一样
- var num6_1 = -120;
- var num6_2 = -120;
- var num6_3 = -120;
- console.log(num6_1 <<= 1);//1201=240
- console.log(num6_2 <<= 2);//12022=480
- console.log(num6_3 <<= 3);//120222=960
计算方式:
如: var Z = X <<= Y;
数学公式: Z = X * (2 的 Y 次方)
七, 有符号右移 / 赋值(>>=), 正负数操作一样
- var num7_1 = -120;
- var num7_2 = -120;
- var num7_3 = -120;
- var num7_4 = -120;
- console.log(num7_1>>= 1);// 120/2=60
- console.log(num7_2>>= 2);// 120/(22)=30
- console.log(num7_3>>= 3);// 120/(222)=15
- console.log(num7_4>>= 4)// 120/(2222)=7.5 取 7
计算方式:
如: var Z = X>>= Y;
正数数学公式: Z = X/(2 的 Y 次方) => 再取证
正数数学公式: Z = X/(2 的 Y 次方) - 1 => 再取证
八, 无符号右移 / 赋值(>>>=)PS: 如果是正数跟《有符号右移 / 赋值》计算方式一样
这里只举例负数:
- var num8_1 = -120;
- var num8_2 = -120;
- var num8_3 = -120;
- var num8_4 = -120;function(){
- ???// 跟单: www.gendan5.com
- console.log(num8_1>>>= 1);//2147483588
- console.log(num8_2>>>= 2);//1073741794
- console.log(num8_3>>>= 3);//536870897
- console.log(num8_4>>>= 4);//268435448
计算方式我得详细的说一下:
代码为:
- var num = -120;
- var nums = num>>>= 4;
- console.log(nums)
来源: http://www.bubuko.com/infodetail-3205472.html