当前位置: 首页 > 面试题库 >

使用按位或0将数字取底

孔海超
2023-03-14
问题内容

我的一位同事偶然发现了一种使用按位或来对浮点数求和的方法:

var a = 13.6 | 0; //a == 13

我们正在谈论它,并且想知道一些事情。

  • 它是如何工作的?我们的理论是使用这样的运算符将数字转换为整数,从而除去小数部分
  • 这样做有什么好处Math.floor吗?也许更快一点?(双关语无意)
  • 有什么缺点吗?也许在某些情况下不起作用?清晰度很明显,因为我们必须弄清楚这一点,我在写这个问题。

谢谢。


问题答案:

它是如何工作的?我们的理论是使用这样的运算符将数字转换为整数,从而除去小数部分

除无符号右移,以外的所有按位运算都>>>对有符号的32位整数起作用。因此,使用按位运算会将浮点数转换为整数。

与做Math.floor相比有什么优势吗?也许更快一点?(双关语无意)

有什么缺点吗?也许在某些情况下不起作用?清晰度很明显,因为我们必须弄清楚这一点,我在写这个问题。

  • 不会通过jsLint。
  • 仅32位有符号整数
  • 比较行为:Math.floor(NaN) === NaN,而(NaN | 0) === 0


 类似资料:
  • 问题内容: 我想问是否有人知道查询将十进制的0值删除。 例如:字段名称百分比具有以下值 百分 770.00000000000000000000、340.670000000000000000000、96.00000000000000000000、4400.56000000000000000000、109.89000000000000000000、109.00000000000000000000、37

  • 本文向大家介绍javascript获取四位数字或者字母的随机数,包括了javascript获取四位数字或者字母的随机数的使用技巧和注意事项,需要的朋友参考一下 本章节通过代码实例介绍一下如何实现简单的四位随机数功能。 比较简单的一种实现方式就是从数字和字母中随机抽取四个不重复的字符。 代码实例如下: 上面的代码实现了我们的要求,下面就介绍一下上面代码的实现过程。 一.代码注释: 1.functio

  • 比方说,我有一个字节数组,包含没有标题的原始位图数据。 但是位图数据有点奇怪,我不太确定,但是如果宽度是NPOT(不是二次方),位图数据似乎没有正确对齐 我使用以下代码从此类位图数据构造bmp: 到目前为止,代码运行良好。但由于某些原因,我需要实现“导入位图”,这意味着我需要从位图实例中获取“奇怪”的位图数据。 我该怎么做?

  • 本文向大家介绍JS取数字小数点后两位或n位的简单方法,包括了JS取数字小数点后两位或n位的简单方法的使用技巧和注意事项,需要的朋友参考一下 在js中有时要用到取float数字的小数点后两位的情况。 以上就是小编为大家带来的JS取数字小数点后两位或n位的简单方法全部内容了,希望大家多多支持呐喊教程~

  • 问题内容: 我在Redis上使用Lua,想比较两个带符号的64位数字,这些数字存储在两个8字节/字符的字符串中。 如何使用Redis中可用的库进行比较? http://redis.io/commands/EVAL#available- libraries 我想知道并检查。我认为这可能涉及为每个64位int提取两个32位数字,并对它们进行一些巧妙的数学运算,但是我不确定。 我有一些代码可以使这一过程

  • 问题内容: 在select语句中用作字段值时,可以将1或0表示为一位吗? 例如 在这种情况下,语句(属于select语句)ICourseBased的类型为int。 为了使它成为位类型,我必须转换两个值。 是否有一种简便的方法可以将值表示为位类型而不必每次都强制转换? (我正在使用MS SQL Server 2005) 问题答案: CAST规范为“ CAST(表达式AS类型)”。在这种情况下,CAS