Aller au contenu

logand ?


Tramber

Messages recommandés

logand signifie "ET Logique". C'est une fonction qui effectue une opération booléenne entre deux nombres exprimés sous forme binaire. Par exemple, la fonction (logand 2 3) renvoie 2.

 

Le chiffre 2 s'écrit 10 en binaire. Le chiffre 3 s'écrit 11.

 

Si tu additionnes 10 et 11 en mode binaire, c'est à dire comme on dit "bit à bit", (désolé), tu obtiens 10, toujours en binaire car si tu combines les deux chiffres du premier rang, 1 et 0 fait 0, (c'est le AND en informatique) et 1 et 1 fait 1 pour le deuxième rang.

 

Résultat binaire = 10, transformé en décimal ça donne 2.

 

Ces opérations booléennes sont assez souvent utilisées par les programmeurs, spécialement dans AutoCAD, par exemple pour savoir quel mode d'accrochage est actif... ;)

 

(voir l'aide AutoCAD sur la variable système OSMODE)

Lien vers le commentaire
Partager sur d’autres sites

En fait, là, c'est pour faire du DCL, mais peu importe, on voit en effet que ca sert à retrouver des valeurs de bit.

 

Mais dieu que le concept parait tordu à un non informaticien.

 

4 s'écrit 101 ?

 

 

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Non 4 en décimal s'écrit 100 en binaire...c'est à dire 2^2 (2 puissance 2). Seul le troisième rang est à 1, le rang puissance 1 et puissance 0 sont à zéro, en fait, tu écris les puissances de 2 de droite à gauche en partant de zéro, 100 en binaire se décompose donc comme suit:

 

(1 * 2^2) + (0 * 2^1) + (0 * 2^0) = 100 en binaire

 

Bon weekend quand même ;)

 

C'est sûr que c'est de l'informatique pure et dure.

Lien vers le commentaire
Partager sur d’autres sites

Salut

Pour essayer de simplifier les explications de Patrick

 

--------------ENTIER 8 BITS-------------

----------------------------------------

|BINAIRE |128|64|32|16|8|4|2|1| DECIMAL

|00000101|--0|-0|-0|-0|0|1|0|1| 4+1=5

|00100010|--0|-0|-1|-0|0|0|1|0| 32+2=34

|01001001|--0|-1|-0|-0|1|0|0|1| 64+8+1=73

|11111111|--1|-1|-1|-1|1|1|1|1| 128+64+32+8+4+2+1=255

 

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

je ne sais pas si ça peut intéresser j'avais fait un lisp qui donne les puissances des nombres (mais qui ne m'a pas servi...) :

exemple : 2500- -> (2 6 7 8 11) soit 2^ 2+2^ 6+2^ 7+2^ 8+2^ 11

 

 

;****************************************

; ---------Décomposer binaire ----------

;****************************************

;by Ludwig Desmier

(defun c:bin (/ NB n LISTn)

(setq NB (getreal "\nEntrez le réel :\n"))

(setq n 14) ; attention ne pas mettre plus car après 2^15 est un nombre trop grand pour autocad --> erreur fatale

(while (> NB 0)

(while (<= (+ NB 1) (expt 2 n)) (setq n (- n 1)))

(setq NB (- NB (expt 2 n)))

(setq LISTn (cons n LISTn))

)

(print LISTn)

(print)

)

Autocad 2021 - Revit 2022 - Windows 10

Lien vers le commentaire
Partager sur d’autres sites

Pour ceux qui veulent manipuler les bits, vous trouverez des procédures lisp interessantes à

 

http://www.autolisp-tutorial.mapcar.net/bits1.html

http://www.crlf.de/Dokumente/Logical%20LISP.html

 

Ca peut aider a comprendre l'utilisation des opérateur booléen.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

NIne (orthographe ?)

 

Mais les procédures lisp sont internationales.

Je pense que celle ci sont assez abouties pour que l'on puisse s'appuyer sur ce qu'elle retourne comme résultat

En plus elles ne comportent aucun message en allemand.

 

Mais pour notre ami Alsacien c'est du choucroute garnie ;)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Du m'édonnes, mais che parle plutot Hanglais !

On va allez voir ça. En glissant le code dans Vlisp, ca me parlera bien...

 

Arrêtons de nous plaindre quand même, nous sommes parmis les mauvais élèves de l'Europe.

 

Sauf en Alsace, où les gens sont souvent bilingues (disons, ont de grosses facilités avec l'Allemand, dont l'Alsacien est issu). Mais moi, qui suis des Flandres (Mein Vlaeke Land...).

 

[Edité le 30/11/2004 par Tramber]

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Tramber,

 

D'abord un extrait de l'aide sur la variable OSMODE.

 

Type : Entier

Enregistrée dans : Base de registres

Valeur Initiale : 4133

Définit les modes d'accrochage aux objets actifs à l'aide des codes binaires qui suivent :

 

0 AUCun

1 EXTrémité

2 MILieu

4 CENtre

8 NODal

16 QUAdrant

32 INTersection

64 INSertion

128 PERpendiculaire

256 TANGente

512 PROche

1024 RAPide

2048 Intersection PROJetée

4096 EXTension

8192 PARallèle

 

Pour spécifier plusieurs modes d'accrochage aux objets, entrez la somme de leurs valeurs. Par exemple, l'entrée de la valeur 3 spécifie les accrochages aux objets Extrémité (code binaire 1) et Milieu (code binaire 2). La valeur 16383 spécifie quant à elle tous les accrochages aux objets.

 

Quand les accrochages aux objets sont désactivés à l'aide du bouton Accrobj de la barre d'état, le code binaire 16384 (0x4000) est renvoyé, en plus de la valeur normale d'OSMODE. Cette valeur supplémentaire permet aux développeurs d'écrire des applications pour AutoCAD et de distinguer ce mode des modes d'accrochage aux objets désactivés à partir de la boîte de dialogue Paramètres de dessin. Si vous affectez une valeur à ce bit, les modes d'accrochage aux objets actifs sont désactivés. Attribuer une valeur à OSMODE alors que ce bit est désactivé active les modes d'accrochage aux objets actifs.

 

========================================

 

Ensuite, le mot octet vient de l'utilisation de groupe de 8 chiffres, soit des zéros ou des uns. Lorsque je jouais au bowling, j'avais toujours l'impression d'écrire mon score en binaire (mais ça c'est une autre histoire).

 

========================================

 

La raison d'avoir choisi des nombres binaires est simple Ça permet de faire des combinaisons ou de vérifier plus facilement. Ci après la représentation binaire et décimale des mêmes modes d'accrochage.

 

Binaire - Décimal - Signification

00000000000000 - 0 AUCun

00000000000001 - 1 EXTrémité

00000000000010 - 2 MILieu

00000000000100 - 4 CENtre

00000000001000 - 8 NODal

00000000010000 - 16 QUAdrant

00000000100000 - 32 INTersection

00000001000000 - 64 INSertion

00000010000000 - 128 PERpendiculaire

00000100000000 - 256 TANGente

00001000000000 - 512 PROche

00010000000000 - 1024 RAPide

00100000000000 - 2048 Intersection PROJetée

01000000000000 - 4096 EXTension

10000000000000 - 8192 PARallèle

 

Si tu veux rendre tous les modes actifs, tu t'assure qu'il y aura un 1 à chaque position. C'est le rôle d'un logior: 0 ou 0 donne 0, 1 ou 0 donne 1, 0 ou 1 donne 1 et 1 ou 1 donne 1.

 

Tu peux donc faire (setvar "osmode" (logior (getvar "osmode") 16383))

Ceci est un cas extrême, mais si tu avais voulu allumer CENtre et laisser les autres actifs, tu aurais déclaré (setvar "osmode" (logior (getvar "osmode") 4)).

 

Note: La somme de tous ces chiffres est le dernier de la suite, multiplié par 2, moins 1. Dans l'exemple, la somme de 1 jusqu'à 8192 est donc (8192*2)-1, soit 16383.

 

Pour le logang (et non logiand), cela te permet de savoir un un bit était allumé ou non: 0 et 0 donne 0, 1 et 0 donc 0, 0 et 1 donne 0 et 1 et 1 donne 1.

 

Ainsi, si tu voulais savoir si le mode CENter était allumé, tu dirais:

(if (logand (getvar "osmode") 4) ....)

Comme 4 est en fait 00000000000100, tous ces zéros vont annuler les 1 présent dans le (getvar "osmode"). Seul le 1 va pouvoir se confronter à ce que vaut le getvar.

 

Serge

 

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité