3个不稳定版本

0.2.0 2022年11月7日
0.1.1 2022年10月10日
0.1.0 2022年10月9日

#980数学

MIT 协议

110KB
3K SLoC

hwcalc

hwcalc,或 hc,是一个任意位宽的计算器。

文档

请参阅 docs/man/hc.1 中的手册页,例如使用。

$ man -l docs/man/hc.1

还有一个渲染版本可供查阅,请访问 https://hllmn.net/man/hc.1

构建

可以使用 Cargo 软件包管理器获取依赖项并构建 hc

$ cargo build --release

生成的二进制文件将位于 target/release/hc

安装

Makefile 中有一个用于安装 hc 二进制文件和手册页的规则

# make install

还有一个卸载规则

# make uninstall

或者,可以通过 Cargo 从 crates.io 安装 hc

cargo install hwcalc

这将把 hc 二进制文件安装在 Cargo 根目录下的 bin/hc(通常是 ~/.cargo)下,但不会安装手册页。

示例

hc 的功能类似于典型的计算器,可以输入将被评估的表达式

> (2 + 7) * 0xd
117
 = 0b111_0101
 = 0o165
 = 0x75

可以通过类型说明符给数字指定特定的宽度

> 77u8
77
 = 0b0100_1101
 = 0o115
 = 0x4d

对于负数,将以补码形式显示非十进制表示

> -77i8
-77 (= 179)
 = 0b1011_0011
 = 0o263
 = 0xb3

数的符号性会影响当操作数宽度不同时的扩展方式

> 32u8 + (-1)'i4
31
 = 0b0001_1111
 = 0o037
 = 0x1f
> 32u8 + (-1)'u4
47
 = 0b0010_1111
 = 0o057
 = 0x2fa

值不仅可以是整数,也可以包含小数部分

> 10/4
2.5 (= 5/2)
 = 0b10.1
 = 0o2.4
 = 0x2.8

默认情况下,精度是无限的,如果值不能由有限位数表示,则无限重复的数字序列将被括号括起来

> 1/3
0.(3) (= 1/3)
 = 0b0.(01)
 = 0o0.(25)
 = 0x0.(5)

如果指定了小数宽度,则小数部分将被截断

> 1/3q.8
0.332_031_25 (= 85/256)
 = 0b0.0101_0101
 = 0o0.252
 = 0x0.55

对于未指定整数宽度的负数,在非十进制基数下整数部分将显示无限重复的数字

> -5.25
-5.25 (= -21/4)
 = 0b(1)010.11
 = 0o(7)2.6
 = 0x(f)a.c

依赖关系

~2–12MB
~136K SLoC