梅花易数传自邵康节,是利用易经八卦预测术中一种,和计算机颇有渊源。个人感觉易经是布尔数学的一种,运行布尔数学可以很轻松的推导出易经的64卦,而易经预测应该是概率统计数学。64卦分为8宫,以0,1为基础,每宫八个卦,以八进制为进位,一共64卦。
"阴阳(太极)☯"的64卦的单横记为0,双横记为1,乾卦三个单横☰就表示0,坤卦三个双横表示3个1为7,兑卦一个双横两个单横,表示1,以此类推0到7分别为乾兑离震巽坎艮坤,如下{"乾 ☰","兑 ☱" , "离 ☲","震 ☳","巽 ☴","坎 ☵","艮 ☶","坤 ☷"},每一卦都可以使用三个比特表示。扩展到64卦,使用六个比特,乾为六个单横,6个0还表示0,坤为六个双横,六个1,八进制为77,7X8+7表示63,以此类推,64卦就表示为63个数字,用单双横分别代替0和1,就是六十四卦像。对应卦名为:
String []GuaMing = {"乾为天", "泽天夬","火天大有","雷天大壮","风天小畜","水天需","山天大畜","地天泰",
"天泽履", "兑为泽", "火泽睽", "雷泽归妹","风泽中孚","水泽节", "山泽损", "地泽临",
"天火同人","泽火革", "离为火", "雷火丰", "风火家人","水火既济","山火贲", "地火明夷",
"天雷无妄","泽雷随", "火雷噬嗑","震为雷", "风雷益", "水雷屯", "山雷颐", "地雷复",
"天风姤", "泽风大过","火风鼎", "雷风恒", "巽为风", "水风井", "山风蛊", "地风升",
"天水讼", "泽水困", "火水未济","雷水解", "风水涣", "坎为水", "山水蒙", "地水师",
"天山遁", "泽山咸", "火山旅", "雷山小过","风山渐", "水山蹇", "艮为山", "地山谦",
"天地否", "泽地萃", "火地晋", "雷地豫", "风地观", "水地比", "山地剥", "坤为地",
};
六十四卦都是由两个单卦组成,单卦如下:
String [] BaGua= {"天","泽","火","雷","风","水","山","地"};
String [] BenGuaMing= {"乾","兑","离","震","巽","坎","艮","坤"};
一个循环按顺序输出64卦,使用八进制取取三个BIT位的信息,按值绘出图形;
for (int i = 0; i < 64; i++) {
String s1 = BaGua[i&0x07];
String s2 = BaGua[(i>>3)&0x07];
String s = s1 + s2;
System.out.println(i+GuaMing[i]);
System.out.println(s);
System.out.println(xiang[i&0x07]);
System.out.println(xiang[(i>>3)&0x07]);
}
0乾为天
天天
乾 ☰
乾 ☰
1泽天夬
泽天
兑 ☱
乾 ☰
2火天大有
火天
离 ☲
乾 ☰
3雷天大壮
雷天
震 ☳
乾 ☰
4风天小畜
风天
巽 ☴
乾 ☰
5水天需
水天
坎 ☵
乾 ☰
6山天大畜
山天
艮 ☶
乾 ☰
7地天泰
地天
坤 ☷
乾 ☰
8天泽履
天泽
乾 ☰
兑 ☱
9兑为泽
泽泽
兑 ☱
兑 ☱
10火泽睽
火泽
离 ☲
兑 ☱
11雷泽归妹
雷泽
震 ☳
兑 ☱
12风泽中孚
风泽
巽 ☴
兑 ☱
13水泽节
水泽
坎 ☵
兑 ☱
14山泽损
山泽
艮 ☶
兑 ☱
15地泽临
地泽
坤 ☷
兑 ☱
16天火同人
天火
乾 ☰
离 ☲
17泽火革
泽火
兑 ☱
离 ☲
18离为火
火火
离 ☲
离 ☲
19雷火丰
雷火
震 ☳
离 ☲
20风火家人
风火
巽 ☴
离 ☲
21水火既济
水火
坎 ☵
离 ☲
22山火贲
山火
艮 ☶
离 ☲
23地火明夷
地火
坤 ☷
离 ☲
24天雷无妄
天雷
乾 ☰
震 ☳
25泽雷随
泽雷
兑 ☱
震 ☳
26火雷噬嗑
火雷
离 ☲
震 ☳
27震为雷
雷雷
震 ☳
震 ☳
28风雷益
风雷
巽 ☴
震 ☳
29水雷屯
水雷
坎 ☵
震 ☳
30山雷颐
山雷
艮 ☶
震 ☳
31地雷复
地雷
坤 ☷
震 ☳
32天风姤
天风
乾 ☰
巽 ☴
33泽风大过
泽风
兑 ☱
巽 ☴
34火风鼎
火风
离 ☲
巽 ☴
35雷风恒
雷风
震 ☳
巽 ☴
36巽为风
风风
巽 ☴
巽 ☴
37水风井
水风
坎 ☵
巽 ☴
38山风蛊
山风
艮 ☶
巽 ☴
39地风升
地风
坤 ☷
巽 ☴
40天水讼
天水
乾 ☰
坎 ☵
41泽水困
泽水
兑 ☱
坎 ☵
42火水未济
火水
离 ☲
坎 ☵
43雷水解
雷水
震 ☳
坎 ☵
44风水涣
风水
巽 ☴
坎 ☵
45坎为水
水水
坎 ☵
坎 ☵
46山水蒙
山水
艮 ☶
坎 ☵
47地水师
地水
坤 ☷
坎 ☵
48天山遁
天山
乾 ☰
艮 ☶
49泽山咸
泽山
兑 ☱
艮 ☶
50火山旅
火山
离 ☲
艮 ☶
51雷山小过
雷山
震 ☳
艮 ☶
52风山渐
风山
巽 ☴
艮 ☶
53水山蹇
水山
坎 ☵
艮 ☶
54艮为山
山山
艮 ☶
艮 ☶
55地山谦
地山
坤 ☷
艮 ☶
56天地否
天地
乾 ☰
坤 ☷
57泽地萃
泽地
兑 ☱
坤 ☷
58火地晋
火地
离 ☲
坤 ☷
59雷地豫
雷地
震 ☳
坤 ☷
60风地观
风地
巽 ☴
坤 ☷
61水地比
水地
坎 ☵
坤 ☷
62山地剥
山地
艮 ☶
坤 ☷
63坤为地
地地
坤 ☷
坤 ☷
梅花易常用的互卦也能简单使用位运算求出,根据2,3,4,5多组成新的卦为互卦,对应2,3,4,5比特位
public static int getHuGua(int g) {
int a = (g>>1)&0x7;
int b = (g>>2)&0x7;
return ((b<<3)|a);
}
梅花易常用的变卦,某一多取反,单横变双横,双横变单横,使用异或运算,由于变爻是从下卦最下边一多开始,其实对应的是卦的最高位,所以使用6减
public static int getBianGua(int g, int dong) {
dong = 0x1<<(6-dong);
return (g^dong);
}
梅花易还有起卦,时间起,汉字起,摇卦等。也可以很轻松转为数学总是起之。