明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5222|回复: 15

[求助]:[1227]请问logand与logior两命令的涵义与用法?

  [复制链接]
发表于 2006-12-27 22:35:00 | 显示全部楼层 |阅读模式


[求助]:[1227]请问logand与logior两命令的涵义与用法?

看书上这样写...
===========================================================
logand (logand integer integer . . .)
>>对诸integer参数作位元的逻辑and运算,传回其结果值。

(logand 7 15 3) -> 3
(logand 8 3 4) -> 0
===========================================================
logior
>>对诸integer参数作位元的逻辑or运算,传回其结果值。

(logior 1 2 4) -> 7
(logior 9 3) -> 11
===========================================================
但不明白何谓"位元的逻辑and运算"与"位元的逻辑or运算"

尤其是执行后的过程更无法理解

烦请各位高手可以解答一下
谢谢

发表于 2006-12-27 22:50:00 | 显示全部楼层

其实就是二进制的运算判断:

位元,也称位码,在十进制中是这样的数字:

1,2,4,8,16,32,64,128,256,...

对应二进制应该就是

1,10,100,1000,10000,10000,...

(logand 7 15 3):

7=1+2+4
15=1+2+4+8
3=1+2
其中都有1+2,所以就是3

(logand 8 3 4)

8=8
3=1+2
4=4
没有相同的,所以为0

(logior 1 2 4)

1+2+4=7

(logior 9 3)
9=1+8
1+8+3=11

点评

这么一讲,我就明白了。感谢明总!!!  发表于 2012-5-23 12:32
还是明总讲解的生动啊! 一下就明白了。  发表于 2012-5-4 19:49
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2006-12-28 06:15:00 | 显示全部楼层

谢谢您的解答,所以意思就是

logand "位元的逻辑and运算" => 保留相同的十进位数值并相加

logior "位元的逻辑or运算" = > 删除相同的十进位数值并相加

这样理解对吗?

回复 支持 1 反对 0

使用道具 举报

发表于 2021-6-24 16:17:52 | 显示全部楼层
  1. ; a way to find a closed polyline by point inside
  2. ;Lee Mac
  3. (defun polyfrominsidepoint (p / e i r s)
  4.   (if
  5.     (setq i -1
  6.           s
  7.             (ssget "_X"
  8.                    (list '(0 . "LWPOLYLINE")
  9.                          '(-4 . "&=")
  10.                          '(70 . 1)
  11.                          (if (= 1 (getvar 'cvport))
  12.                            (cons 410 (getvar 'ctab))
  13.                            '(410 . "Model")
  14.                          )
  15.                    )
  16.             )
  17.     )
  18.      (while (and (null r) (setq e (ssname s (setq i (1+ i)))))
  19.        (if (raycast p
  20.                     (mapcar 'cdr
  21.                             (vl-remove-if-not '(lambda (x) (= 10 (car x)))
  22.                                               (entget e)
  23.                             )
  24.                     )
  25.            )
  26.          (setq r e)
  27.        )
  28.      )
  29.   )
  30.   r
  31. )
  32. (defun raycast (p l)
  33.   (= 1
  34.      (logand 1
  35.              (length
  36.                (vl-remove 'nil
  37.                           (mapcar
  38.                             '(lambda (a b)
  39.                                (inters p (mapcar '+ p '(1e8 0.0)) a b)
  40.                              )
  41.                             (cons (last l) l)
  42.                             l
  43.                           )
  44.                )
  45.              )
  46.      )
  47.   )
  48. )
  49. (defun c:SelPolylinebyPoint (/ e p)
  50.   (if (setq p (getpoint "\nSpecify point: "))
  51.     (if        (setq e (polyfrominsidepoint p))
  52.       (sssetfirst nil (ssadd e))
  53.       (princ "\nNo polyline found.")
  54.     )
  55.   )
  56.   (princ)
  57. )

大家看看,李麦克的用法,是什么讲究?
发表于 2011-6-8 21:25:43 | 显示全部楼层
请问版主这样的函数有什么意义呢?
发表于 2011-6-8 22:03:43 | 显示全部楼层
本帖最后由 caoyin 于 2011-6-8 22:04 编辑

例如分别用两个函数判断当前OSMODE的端点和中点捕捉是否打开:
1.logand
(setq X (logand (getvar 'osmode) 3))
(cond
((= X 0) (alert "端点和中点捕捉都未打开"))
((= X 1) (alert "端点捕捉已打开"))
((= X 2) (alert "中点捕捉已打开"))
((= X 3) (alert "端点和中点捕捉都已打开"))
)
2:logior
(setq OS (getvar 'osmode) X (- (logior OS 3) OS))
(cond
((= X 3) (alert "端点和中点捕捉都未打开"))
((= X 2) (alert "中点捕捉未打开"))
((= X 1) (alert "端点捕捉未打开"))
((= X 0) (alert "端点和中点捕捉都已打开"))
)
发表于 2011-6-8 23:23:02 | 显示全部楼层
不错,又学了一招logand
logior用法
。。。。
发表于 2011-6-16 16:02:30 | 显示全部楼层
总算有点眉目了。
发表于 2011-6-16 22:57:16 | 显示全部楼层
谢谢caoyin版主的解答,这个2个函数一直没理解,今天算是明白了
发表于 2012-5-4 19:40:34 | 显示全部楼层
收藏。。。。。。
发表于 2012-5-4 19:43:57 | 显示全部楼层
学习了!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-16 18:30 , Processed in 0.190777 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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