| 今天开始看SKILL函数了,看到BAND一直不解,折腾了半天,又在网上查资料,终于明白了 AND:就是与的意思,会一个个检查and中的参数,当比较到其中一个为NIL时,则退出检查,返回NIL;当最后参数也为真时,则返回最后一个参数的值 and( g_arg1 g_arg2 [ g_arg3... ] ) => nil | g_val band:b是位的意思,并且是并行比较(也就是band中的每个参数同时按二进制位比较) band( x_op1 x_op2 [ x_op3 ... ] ) => x_result 如以下例子 band(12 13) => 12 如二进制1100表示12 1101表示13 ,然后逐位比较相与,结果是1100,也就是12 bnand:表示逐位比较与非 如下例子 bnand(12 13) => -13 这里用到了非运算,所以有点特别,二进制需要用2个字节也就是16位来表示 如12用0000000000001100 13用0000000000001101表示,然后与非,与非是有0出1,全1出0 比较的结果是1111111111110011,这里的结果不是实际结果,只是一个补码,补码=反码+1,反码的非值就是真实值,所以先得到反码的值是1111111111110010(反码做非运算时,最高位保留,表示正负,1为负,0为正),所以真实值是1000000000001101,也就是-13 其它的或非,异或之类的同理,这里就不说了 其实感觉SKILL很少能用到,就是把数值比较变为逻辑关系的判断 |
| 欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) | Powered by Discuz! X3.2 |