mirror of
https://github.com/airbnb/javascript.git
synced 2026-04-25 03:00:19 -04:00
Merge pull request #126 from Jabher/patch-1
32-bit integers and bitwise operators explained with example of issues
This commit is contained in:
@@ -970,7 +970,6 @@
|
||||
```
|
||||
|
||||
- If for whatever reason you are doing something wild and `parseInt` is your bottleneck and need to use Bitshift for [performance reasons](http://jsperf.com/coercion-vs-casting/3), leave a comment explaining why and what you're doing.
|
||||
- **Note:** Be careful when using bitshift operations. Numbers are represented as [64-bit values](http://es5.github.io/#x4.3.19), but Bitshift operations always return a 32-bit integer ([source](http://es5.github.io/#x11.7)). Bitshift can lead to unexpected behavior for integer values larger than 32 bits. [Discussion](https://github.com/airbnb/javascript/issues/109)
|
||||
|
||||
```javascript
|
||||
// good
|
||||
@@ -982,6 +981,14 @@
|
||||
var val = inputValue >> 0;
|
||||
```
|
||||
|
||||
- **Note:** Be careful when using bitshift operations. Numbers are represented as [64-bit values](http://es5.github.io/#x4.3.19), but Bitshift operations always return a 32-bit integer ([source](http://es5.github.io/#x11.7)). Bitshift can lead to unexpected behavior for integer values larger than 32 bits. [Discussion](https://github.com/airbnb/javascript/issues/109). Largest signed 32-bit Int is 2,147,483,647:
|
||||
|
||||
```javascript
|
||||
2147483647 >> 0 //=> 2147483647
|
||||
2147483648 >> 0 //=> -2147483648
|
||||
2147483649 >> 0 //=> -2147483647
|
||||
```
|
||||
|
||||
- Booleans:
|
||||
|
||||
```javascript
|
||||
|
||||
Reference in New Issue
Block a user