js 1%2是什么意思?

JavaScript037

js 1%2是什么意思?,第1张

1%2是模运算,也就是取余数运算。

%是除法取余运算,用于整数与整数运算,%作为取余运算符,用于把它前面的整数值或表达式除以其后面的整数值或表达式,结果为不能被后面的整数或表达式整除的最小整数,它后面的数值应该为大于1的正整数。

扩展资料:

“模”是“Mod”的音译,模运算多应用于程序编写中,Mod的含义为求余,模运算在数论和程序设计中都有着广泛的应用。

模运算基本性质

1、若p|(a-b),则a≡b (% p)。例如 11 ≡ 4 (% 7), 18 ≡ 4(% 7)

2、(a % p)=(b % p)意味a≡b (% p)

3、对称性,a≡b (% p)等价于b≡a (% p)

4、传递性,若a≡b (% p)且b≡c (% p) ,则a≡c (% p)

参考资料来源:百度百科-模运算

在了解位运算之前, 必须先了解一下什么是原码, 反码和补码, 以及二进制与十进制的转换.

原码

一个数在计算机中是以二进制的形式存在的, 其中第一位存放符号, 正数为0, 负数为1. 原码就是用第一位存放符号的二进制数值. 例如2的原码为00000010, -2的原码为10000010

反码

正数的反码是它本身, 负数的反码是在其原码的基础上, 符号位不变, 其余各位取反.

可见如果一个反码表示的是负数, 并不能直观的看出它的数值, 通常要将其转换成原码再计算

补码

正数的补码是它本身, 负数的补码是在其原码基础上, 符号位不变, 其余各位取反, 最后+1. (即负数的补码为在其反码的基础上+1)

可见对于负数, 补码的表示方式也是让人无法直观的看出其数值的, 通常也需要转换成原码再计算.

正整数十进制转二进制

正整数的十进制转二进制的方法为将一个十进制数除以2, 得到的商再除以2, 以此类推知道商为1或0时为止, 倒序取得除得的余数, 即为转换所得的二进制数.

负整数十进制转二进制

负整数的十进制转二进制, 先将该负整数对应的正整数转为二进制, 然后对其取反再+1. 即补码的形式

十进制小数转二进制

十进制小数转二进制的方法为"乘2取整", 对十进制的小数部分乘2, 得到的整数部分即是相应的二进制码数, 然后继续对得到的小数部分乘2, 如此不断重复, 直到小数部分为0或达到精度要求为止. 顺序取得每次的整数部分, 即是该十进制小数的二进制表示.

按位运算符有6个

&: 按位与

|: 按位或

^: 按位异或

~: 按位取反

>>: 右移

<<: 左移

将运算数以二进制表示, 对应位都为1, 则结果为1, 否则为0.

使用场景示例:

判断一个数是奇数还是偶数

奇数的二进制码的最后一位数肯定是1, 而1只有最后一位为1, 按位与运算后, 结果肯定只有最后一位数是1. 而偶数的二进制表示的最后一位数是0, 和1进行按位与运算, 结果的所有位都是0.

将运算数以二进制表示, 对应位有一个为1, 则结果为1, 否则为0.

使用场景示例:

对浮点数向下求整

其实浮点数是不支持位运算的, 所以会先把小数位丢弃, 然后以整数进行位运算, 而任何数与0进行按位或操作, 结果都是它本身, 就好像是对浮点数向下求整.

将运算数以二进制表示, 对应位相同为0, 相异为1.

异或满足交换律和结合律, 数字与它本身进行异或操作, 得到0数字与0进行异或操作, 得到它本身.

使用场景示例:

交换两个变量数字的值

将操作数转换为二进制数, 然后按位求反.

浮点数是不支持位运算的,所以会先直接去除小数部分,转成整数再进行位运算,就好像是对浮点数向下求整.

~~可以进行类型转换,位运算会默认将非数字类型转换成数字类型再进行运算 (转换结果为整数 直接去除小数部分)

使用场景示例:

类型转换

移位运算符将操作数转换成二进制, 然后向左或向右移动, 超过的位丢弃, 空出的位补0.

使用场景示例:

类型转换

任何小数 把它 >>0可以取整

如3.14159 >>0 = 3

其默认将非数字类型的转换为数字类型再做运算的性质与 ~~ , | 0 一样

javascript取模运算是一个表达式的值除以另一个表达式的值,并返回余数。

取模在js里就是取余数的意思。

a%b  //是求余数

a/b  //是求商

Math.abs(x)   //是求x的绝对值

12除以5=2,余数是2,即5*2+2=12,所以12%5=2

7除以3=2,余数是1,即3*2+1=7,所以7%3=1

扩展资料:

取模运算(“Modulo Operation”)和取余运算(“Complementation ”)两个概念有重叠的部分但又不完全一致。主要的区别在于对负整数进行除法运算时操作不同。取模主要是用于计算机术语中。取余则更多是数学概念。

模运算在数论和程序设计中都有着广泛的应用,从奇偶数的判别到素数的判别,从模幂运算到最大公约数的求法,从孙子问题到凯撒密码问题,无不充斥着模运算的身影。虽然很多数论教材上对模运算都有一定的介绍,但多数都是以纯理论为主,对于模运算在程序设计中的应用涉及不多。

参考资料:百度百科-取模运算

参考资料:百度百科-JavaScript