Numlex 文档
语法参考
反馈问题

数字与进制

十进制、分组、科学计数和紧凑字面量,快速运算符,以及精确的整数进制(十六进制、二进制、八进制)。

Numlex 接受人们书写数字的方式——千位分组、科学记数法、1.5M 之类的紧凑后缀——也接受 精确整数形式 0x、0b 和 0o。

本页说明字面量形式本身、值得了解的紧凑后缀歧义(5m 是五百万,不是五米)、可选的快速 运算符、带显示和溢出规则的整数进制,以及完整的示例集合。

十进制字面量

  • 小数分隔符是 . 或 ,,取决于区域格式——参见 数字格式与结果显示。
  • 输入中的千位分隔符会被规范化:1,234 → 1234、1 234(取决于格式)。函数调用内 的逗号可以改为分隔参数——参见 内置函数。
  • 科学记数法:1.5e6、2E-3。
  • 运算符两侧的空格任意;括号 ( ) 分组;允许一元 + 和 -。

紧凑后缀

紧凑后缀紧跟数字、没有空格,适用于标量和货币金额:

后缀系数示例
k / K×10³1.5k = 1,500;$2.5k = $2,500
m / M×10⁶1.5M = 1,500,000;$2.5M = $2,500,000

有两点值得注意:

  • 5m 是 5,000,000,不是五米。 米需要空格:5 m。
  • G、T 和 P 不是标量或货币后缀。 1.5G 会把字母 G 作为未知单词划掉并返回 1.5。吉咖和太拉只作为带空格的目录单位名称存在:2 Gm、2 Gb、2 Gbyte。

快速运算符(设置)

启用 Quick operators 设置后,四个字母只在两个数字之间充当运算符——在标识符 内部绝不生效:

字母运算符
p+
m−
x×
d÷

字面量 0x… 绝不会变成乘法。

整数进制(精确)

进制字面量使用严格前缀;前缀大小写无关(0X、0B、0O 均可用):

前缀进制数字
0x160-9 A-F
0b20 1
0o80-7

规则:

  • 下划线只能位于两个数字之间: 0x1_0、100_000。双下划线、边缘下划线或紧跟前缀 的下划线都是错误(0x_1F、0x1F_)。
  • 符号-数值表示: -0x10 = −16。任何进制下字面量数值上限为 0x7FFFFFFFFFFFFFFF(9223372036854775807):-0x7FFFFFFFFFFFFFFF 可接受,而 -0x8000000000000000 和 0x8000000000000000 超出精确整数上限,是错误。数字溢出 (0x10000000000000000)也是错误。
  • 显示: 非负结果显示为表达式的进制(0x1F + 1 → 0x20)。负结果和精确整数范围之外的 运算(带余数的除法、负指数的 ^)显示为十进制(-0x10 → −16)。
  • 普通十进制数字串不是精确整数。 9223372036854775808 变为 9.22e18。 精确整数处理只适用于进制字面量、int/bin/oct/hex 函数以及 as / in / to base 短语进入。

进制名称与短语

进制名称不区分大小写:

名称进制
decimal、base1010
binary、base22
octal、base88
hex、hexadecimal、base1616
base 2 / base 8 / base 10 / base 16(空格分隔的整数)2 / 8 / 10 / 16
<expr> as <base name>          255 as hex            → 0xFF
<expr> in <base name>          99 in binary          → 0b1100011
<expr> to base 8               64 to base 8          → 0o100

按位运算

精确整数模式由 0x/0b/0o 字面量、int(/bin(/oct(/hex( 调用、 … as|in <base> 和 … to base N 短语,以及按位符号 & | << >> 或单词 xor 激活(符号只在行含数学内容时计数——fish & chips 仍是普通文本)。 and/or 仅当两侧都是整数时才作为按位运算符。

运算含义说明
&按位与
|按位或符号始终按位:布尔操作数是错误(false | (1/0 > 0))
xor按位异或(单词)6 xor 3 = 5
<<左移移位 0…63;溢出是错误
>>右移移位 0…63;对负数采用算术移位
/整数除法有余数时结果为十进制数
%取余
^乘方指数受检;负指数产生十进制数

这里的所有值都是精确整数:0x7FFFFFFFFFFFFFFF = 9223372036854775807,溢出是可见 错误——绝不是回绕,也绝不是静默舍入的数。单词 and/or/xor 是上下文的:两个整数 使它们按位,两个布尔值使 and/or 逻辑,而在同一运算符中混用类型是严格错误。请在 边界使用显式括号。

完整的运算符优先级见运算符与逻辑。

示例

0x1F + 1              → 0x20
0x1F in decimal       → 31
0b101101 + 1          → 0b101110
0o55 + 1              → 0o56
0x1_0                 → 0x10
100_000 as hex        → 0x186A0
256 as hex            → 0x100
16 in binary          → 0b10000
-0x10                 → -16
1 << 4                → 16
32 >> 2               → 8
0xFF & 0x0F           → 0x0F
5 | 2                 → 7
6 xor 3               → 5
5 << 3                → 40
(5 << 3) / 2          → 20

x = 0x1F
x & 1                 → 1
x + 1                 → 0x20
x as hex              → 0x1F

最后四行在同一个表格中运行,x 只声明一次。

相关

发现文档有问题? 在 GitHub 上反馈