一个基于单 HTML 文件的轻量级起卦工具。用户输入三个三位数字,程序根据传统的“梅花易数”数字起卦逻辑,计算出本卦、动爻及之卦,并自动链接至维基文库查看详细卦辞。
该程序遵循输入校验、余数计算、位运算求变卦、结果映射四个步骤。
graph TD
A[开始] --> B[输入 3 个三位数]
B --> C{校验输入是否合法?}
C -- 否 --> D[弹窗提示错误]
C -- 是 --> E[取模运算]
E --> F1[内卦/外卦: 数字 % 8]
E --> F2[动爻: 数字 % 6]
F1 --> G[映射为二进制卦象]
G --> H[位运算求本卦整值]
H --> I[根据动爻进行 XOR 异或运算]
I --> J[计算出之卦]
J --> K[映射 64 卦名称与序号]
K --> L[渲染 UI 并生成维基文库链接]
L --> M[结束]
程序的核心亮点在于使用二进制位运算来处理卦象的变换。
八卦被映射为 3 位二进制数(阳爻为 1,阴爻为 0):
| 卦名 | 十进制 | 二进制 (高位到低位对应初爻到上爻) |
|---|---|---|
| 乾 | 7 | 111 |
| 兑 | 3 | 011 |
| 离 | 5 | 101 |
| 震 | 1 | 001 |
| 巽 | 6 | 110 |
| 坎 | 2 | 010 |
| 艮 | 4 | 100 |
| 坤 | 0 | 000 |
本卦由外卦(上)和内卦(下)组成,通过左移运算 << 合并成一个 6 位的二进制数:
- 公式:
res1 = (外卦二进制 << 3) | 内卦二进制 - 示例:外卦为乾 (111),内卦为坤 (000),合并后为
111000。
之卦是通过改变本卦中某一个爻的阴阳(0 变 1,1 变 0)得到的。程序使用 XOR (异或) 运算实现:
- 生成掩码 (Mask):将
1左移(动爻 - 1)位。例如动爻为 3,掩码为000100。 - 异或运算:
res2 = res1 ^ Mask。- 如果对应位是
1,1 ^ 1 = 0(阳变阴) - 如果对应位是
0,0 ^ 1 = 1(阴变阳)
- 如果对应位是
通过位移 >> 3 取出高三位(新外卦),通过与运算 & 0b111 取出低三位(新内卦),最后从预设的 name64 矩阵中检索卦名。
- 纯前端实现:无需服务器,单个 HTML 文件即可运行,响应极快。
- 输入限制:通过正则与 HTML 属性强制要求输入 3 位数字,确保计算严谨。
- 移动端优化:包含
viewport适配,禁止数字框上下箭头,适合手机操作。 - 自动化查询:点击卦名直接跳转至《周易》对应的文库页面,方便查阅卦爻辞。
panel-1: 输入控制区。panel-2: 数字计算结果反馈区(显示余数与单卦名)。panel-3: 核心结果展示区,包含本卦与之卦的对比、序号及百科链接。