Page 1 of 2

Astuce: s'assurer qu'un entier est binaire (0 ou 1)

Unread postPosted: 12 Jun 2013, 12:26
by Persalteas
J'utilise une propriété de la fonction factorielle pour une optimisation sympatique:

Si vous avez un entier, et que vous avez besoin de savoir si sa valeur est binaire (par exemple pour une variable booléenne) ou non (tout autre utilisation de la variable, un test très simple se propose à vous:

Code: Select all
If X!=1


En effet, 0!=1 et 1!=1, alors que pour tout autre valeur entière, X!=/=1. Attention, la fonction factorielle n'est définie que sur les entiers (et sur les demi-entiers :o ), donc assurez vous de ne pas avoir une valeur à virgule sinon erreur domain...

Bon, je sais pas si ça servira a grand chose, mais je m'en suis servi pour utiliser la même variable pour deux trucs différents qui ne peuvent pas arriver en même temps dans un jeu.

Enjoy ;)

Re: Astuce: s'assurer qu'un entier est binaire (0 ou 1)

Unread postPosted: 12 Jun 2013, 16:19
by Bisam
A mon avis, tester si X^2=X est bien plus rapide... surtout si X vaut (par exemple) plus de 1000...
En plus, ça marche même si X n'est pas un entier !!

Re: Astuce: s'assurer qu'un entier est binaire (0 ou 1)

Unread postPosted: 12 Jun 2013, 16:19
by Persalteas
:o

Exact. Beaucoup mieux.

Re: Astuce: s'assurer qu'un entier est binaire (0 ou 1)

Unread postPosted: 06 Feb 2014, 11:35
by Wistaro
Merci de l'astuce!

Re: Astuce: s'assurer qu'un entier est binaire (0 ou 1)

Unread postPosted: 06 Feb 2014, 11:40
by Hayleia
On peut aussi tester si X modulo 2 est égal à X, non ? Ça se fait ultra-vite en bas niveau (suffit de faire "and 1") quelque soit la valeur de X (alors que X! et X2 peuvent aller un peu moins vite sur des grands nombres).

Re: Astuce: s'assurer qu'un entier est binaire (0 ou 1)

Unread postPosted: 06 Feb 2014, 11:43
by Wistaro
Je ne crois pas qu'il y ais le modulo en tibasic z80

Re: Astuce: s'assurer qu'un entier est binaire (0 ou 1)

Unread postPosted: 06 Feb 2014, 12:01
by Hayleia
Au pire, X-2int(X/2

Re: Astuce: s'assurer qu'un entier est binaire (0 ou 1)

Unread postPosted: 06 Feb 2014, 20:43
by Hayleia
En TI Basic z80, on peut aussi faire X=not(not(X

Re: Astuce: s'assurer qu'un entier est binaire (0 ou 1)

Unread postPosted: 06 May 2014, 10:22
by pigman
Il serait intéressant de réaliser un programme qui transforme n'importe quel nombre en sa version binaire...

Re: Astuce: s'assurer qu'un entier est binaire (0 ou 1)

Unread postPosted: 17 May 2014, 17:09
by grosged
(je pense que ça a été forcément déjà programmé, mais...)

Je viens de m'amuser à faire ce petit programme de conversion décimal->binaire

Code: Select all
Prompt X
" →Str1
While int(X
.5int(X→X
sub("01",1+2fPart(X),1)+Str1→Str1
End
Ans

en gros , on divise la partie entière de X par 2 (résultat mis dans X) :
s'il y a un reste alors le bit (en partant du plus faible jusqu'au plus fort) du résultat sera à 1, sinon 0
Chaque bit est donc stocké tour-à-tour dans Str1
et on continue ainsi tant que la partie entière de X est > à 0
Au final , Str1 contient la version binaire de X


Edit: en 2ème ligne du prog, c'est bien un espace qui est stocké dans Str1 ;)