var trailingZeroes = function(n) {
var count=0
while(n>=5){
count+=n/5|0 // 这里!!
n/=5
}
return count
};
请问 count+=n/5|0
里的|符号起了什么作用?
var trailingZeroes = function(n) {
var count=0
while(n>=5){
count+=n/5|0 // 这里!!
n/=5
}
return count
};
请问 count+=n/5|0
里的|符号起了什么作用?
这个是位运算符,|
是或的意思,a | b
只要有任何一个值是1
(真),结果就是1
,否则为0
(假)。
类似的还有&
,这个是与的意思,a & b
只要有任何一个值是0
(假),结果就是0
,否则为1
。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
单个的
|
、^
、&
表示位运算。但是严格来说,在
JS
里只有整数才能进行位运算,因此JS
在遇到非整数变量需要进行位运算的时候,会先对这些变量进行隐式类型转换,变成整数再进行计算。然后许多人就利用
JS
这个特点,通过位运算把字符串、浮点数(即带小数的数字)转为整数,可以精简代码,下面的两种写法计算出来的结果是一样的,但是后一种写法要短小一些:不过,这样的写法容易使没有经验的开发者感到疑惑,因此不建议在多人协作或需要后续维护的项目中使用,不然就应该在使用的时候注释其作用(那还不如正经地调用变换方法)。
另外需要注意的是,位运算的参数是 32位有符号整数,这意味着这种取整方法的数值必须小于
2**31
。