找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1702|回复: 9

[求助] [求助]:不明白逻辑运算函数

[复制链接]

已领礼包: 943个

财富等级: 财运亨通

发表于 2002-12-20 14:07:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
按位逻辑与函数(logand )
如果是
(logand 15 3)                 返回3
或函数(logior)
如果是
(logior 9 3)                     返回11
非函数(~)
(~ 4)                               返回-5
(~-6)                               返回5

上面都是书上写的,看不懂。返回值和原值一点联系都没有啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-12-20 14:20:57 | 显示全部楼层

Re: [求助]:不明白逻辑运算函数

最初由 游手好闲 发布
[B]按位逻辑与函数(logand )
如果是
(logand 15 3)                 返回3
或函数(logior)
如果是
(logior 9 3)                     返回11
非函数(~)
(~ 4)                               返回-5
(... [/B]


按位逻辑与函数是将列表中一系列十进制整数先转换为二进制,然后按位进行逻辑与运算。如(logand 15 3),实则为(and 1111 11),得到的结果为二进制11,换算为十进制就是3了。同样的道理,你可以计算其它结果。很少有人注意这个算式的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-12-20 14:21:59 | 显示全部楼层

Re: [求助]:不明白逻辑运算函数

最初由 游手好闲 发布
[B]按位逻辑与函数(logand )
如果是
(logand 15 3)                 返回3
或函数(logior)
如果是
(logior 9 3)                     返回11
非函数(~)
(~ 4)                               返回-5
(... [/B]


这个函数的功能是测试某一位是否为1或者0

比如ACAD里面的一些组码都是在1 4 8 16 32 64 128 等位设置1或者0代表不同的状态。

用上面的函数就可以直接判断一个位是否被设置了。

比如:(logand 72 16)=0 说明二进制的第5位,值是0
再如:(logand 24 16)=16, 说明第5位设置了1

如果你理解二进制的不同的位是否设置1或者0代表的不同的10进制数,就很清楚了。
1--第一位设置1
2--第二位设置1
4--第三位设置1
6--表示第3位、第2位设置了1
8--第四位设置1
16--第五位设置1
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-20 23:24:03 | 显示全部楼层
哪些用到xd能想起来的?
我只想到osmode和dimension的类型。
刚学lisp时看abd的程序,觉得很神,
人家用1248的加值表示东南西北,输15就是全方位,
可后来用对话框,再去算就太土了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 943个

财富等级: 财运亨通

 楼主| 发表于 2002-12-21 08:53:49 | 显示全部楼层
多谢东哥及yi.gao兄,(logand )和(logior)都明白了,可是非函数不懂,4应该是“100”返回值怎么还是-5?
还有相同表达式测试函数(eq)
例如:
(setq f1 '(a b) f2 '(a b))
(setq f3 f2)
(eq f1 f2)             返回nil    ---此处不明白      
(eq f2 f3)             返回T   

我看不出f1与f2有什么区别。如果用equal返回就都是T。
还有还有,那个 ' 是什么意思?表吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-12-21 14:54:34 | 显示全部楼层
最初由 游手好闲 发布
[B]多谢东哥及yi.gao兄,(logand )和(logior)都明白了,可是非函数不懂,4应该是“100”返回值怎么还是-5?
还有相同表达式测试函数(eq)
例如:
(setq f1 '(a b) f2 '(a b))
(setq f3 f2)
(eq f1 f2)       ... [/B]


你看f1 和f2 没有什么不同,但是他们是不同的变量,什么是变量呢?变量就是内存地址,这个地址指向的连续的内存区域里面保存的内容才是变量的“值”,也就是说 eq 比较的不是值,而是两个变量是否指向了同一块内存,如果是才相等。

你试试,你上面的 (eq f2 f3) 肯定返回T ,因为你是赋值他们相等,实际上是f3 f2 变量指向了同一块内存。


  1. [font=courier new][color=blue]
  2. 命令: (setq a '(1 3) b '(1 3) c b)
  3. (1 3)

  4. 命令: (eq c b)
  5. T

  6. 命令: (eq a b)
  7. nil

  8. [/font][/color]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 943个

财富等级: 财运亨通

 楼主| 发表于 2002-12-21 15:42:06 | 显示全部楼层
多谢东哥,上面还有问题呢!
”非函数“!
4的返回值是-5   不明白。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-12-21 16:01:29 | 显示全部楼层
最初由 游手好闲 发布
[B]多谢东哥,上面还有问题呢!
”非函数“!
4的返回值是-5   不明白。 [/B]


“~ ”是按位取反,位是二进制的一位,反的含义就是1变成0,0变成1

比如:

4的二进制表示是:

00000100  ;;一个字节等于8个二进制位

按位取反后是:

11111011

由于二进制最高位是符号位,0代表正数,1代表负数,所以上面的取反后是负数了,由于机器用补码来表示负数,所以上面的负数换成10进制后就是:

-(2^8- (1*2^7+1*2^6+1*2^5+1*2^4+1*2^3+0*2^2+1*2^1+1*2^0)) =-(256-(128+64+32+16+8+0+2+1))=-5
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-21 22:08:59 | 显示全部楼层
(~ x) 的简单算法是: (-x-1)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 943个

财富等级: 财运亨通

 楼主| 发表于 2002-12-21 23:27:14 | 显示全部楼层
感谢东哥,我回去慢慢消化!
南哥说的方法屡试屡爽,待我回去好好想想这是为什么。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-26 06:44 , Processed in 0.225405 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表