JavaScript 24 · v2
这是一篇旧文,其中的内容可能已经过时。
本文的主题不是用 JavaScript 来解决传统的算 24 问题,而是介绍一种新发明的、更有挑战性的算 24 游戏 :) 。
由于位运算的引入,很多原先不可解的问题得到了解决,例如:
// 1, 0, 0, 6
0o60\>\>1 // = 24
// 7, 7, 7, 7
7*7\>\>7/7 // = 24
每组数的解法可能有很多种,其中长度最短者为优。
运算符介绍与提示
运算符 | 类型 | 用途 | 例子 | 备注 |
---|---|---|---|---|
+ | 二元运算符 | 求和 | 3+2 = 5 | |
- | 二元运算符 | 求差 | 3-2 = 1 | |
* | 二元运算符 | 求积 | 3*2 = 6 | |
/ | 二元运算符 | 求商 | 3/2 = 1.5 | 0 不宜作除数 |
% | 二元运算符 | 求模 | 3%2 = 1 | 0 不宜作除数 |
~ | 一元运算符/位运算符 | 按位反 | ~3 = -4 | ~p = -p-1 |
& | 二元运算符/位运算符 | 按位与 | 3&2 = 2 | |
| | 二元运算符/位运算符 | 按位或 | 3|2 = 3 | |
^ | 二元运算符/位运算符 | 按位异或 | 3^2 = 1 | |
\<\< | 二元运算符/位运算符 | 左移 | 3\<\<2 = 12 | p<<q = p*2q |
\>\> | 二元运算符/位运算符 | 右移 | 3\>\>2 = 0 | p>>q = p/2q(整数除法) |
0o | 特殊字 | 八进制数的首位 | 0o30 = 24 | 须消耗一个 0 |
0x | 特殊字 | 十六进制数的首位 | 0x30 = 48 | 须消耗一个 0 |