EDA365电子论坛网

标题: skill函数and band bnand [打印本页]

作者: ssmagic    时间: 2020-5-10 22:26
标题: skill函数and band bnand
今天开始看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很少能用到,就是把数值比较变为逻辑关系的判断


作者: Heaven_1    时间: 2020-5-11 09:38
skill函数用处很多,要好好学习




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2