Misez p'tit Optimisez n°96 : Combien de bits à un dans cet entier ?

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Répondre
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3405
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Misez p'tit Optimisez n°96 : Combien de bits à un dans cet entier ?

Message par C.Ret »

Voilà un p'tit MPO qui va ravir tous les surdoués du numérique et de l'électronique ...

C'est une question toute bête, mais parfois les idées les plus simples ne sont pas les plus faciles à réaliser !

D'ailleurs, je n'ai pas la moindre idée de comment faire ce calcul. Peut-être y a-t-il sur l'une de vos machines une instruction pour le faire facilement en quelques touches ? Je ne sais pas ?

Voilà, par exemple le nombre 5 s'écrit 0101 en binaire, il contient donc deux bits mis à la valeur une.
Par contre, 1968 s'écrit 0111 1011 0000 en binaire, il en contient donc six, soit trois fois plus que 5, mais autant que 1370.
Et 1279 contient neuf bits à un, c'est à dire trois de plus que 1968 ou 1370 qui sont pourtant plus grands que lui, mais autant que son carré qui fait 1635841.
J'y perds mon arithmétique !

Mais, il doit bien y avoir un moyen de calculer, pour un entier positif donné, le nombre de bits à un que contient sa représentation binaire.

Je compte sur vous et sur vos codes bien organisés pour trouver un moyen efficace, simple et court.
Quelques pas de code ou quelques touches préfixées pour me dire Combien de bits à un il y a dans cet entier !
Modifié en dernier par C.Ret le 26 sept. 2020 21:12, modifié 1 fois.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Avatar du membre
bernouilli92
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5230
Enregistré le : 21 nov. 2012 13:03
Localisation : Ile de France

Re: Misez p'tit Optimisez n°96 : Combien de bits à un dans cet entier ?

Message par bernouilli92 »

Ma proposition en RPL :

Code : Tout sélectionner

« 0 → N
  «
    WHILE DUP
    REPEAT 
      2 / DUP IP SWAP FP 2 * 
      'N' STO+
    END 
    DROP N
  »
»
HP, Casio, Sharp, Psion, quelques TI et divers autres
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Re: Misez p'tit Optimisez n°96 : Combien de bits à un dans cet entier ?

Message par Gilles59 »

Version RPL HP50g, mais c'est un peu de la gruge ;D

Code : Tout sélectionner

« BIN R->B ->STR "1" DUP SREPL  »
31,5 octets

en NewRPL c'est un peu différent :

Code : Tout sélectionner

« #0b SWAP + ->STR "1" DUP SREPL »
40 octets

Une version 603P sera plus amusante ;D
Modifié en dernier par Gilles59 le 26 sept. 2020 22:17, modifié 1 fois.
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
Avatar du membre
bernouilli92
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5230
Enregistré le : 21 nov. 2012 13:03
Localisation : Ile de France

Re: Misez p'tit Optimisez n°96 : Combien de bits à un dans cet entier ?

Message par bernouilli92 »

Il manque un SWAP DROP à la fin. Ou je crois qu’il une autre commande qui fait la même chose sur hp50.
HP, Casio, Sharp, Psion, quelques TI et divers autres
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Re: Misez p'tit Optimisez n°96 : Combien de bits à un dans cet entier ?

Message par Gilles59 »

bernouilli92 a écrit : 26 sept. 2020 22:15 Il manque un SWAP DROP à la fin. Ou je crois qu’il une autre commande qui fait la même chose sur hp50.
Oui, c'est NIP ;D Mais j'aimais bien laisser l'affichage en binaire en plus du calcul
Modifié en dernier par Gilles59 le 26 sept. 2020 22:19, modifié 1 fois.
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
Avatar du membre
Gege34
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 1167
Enregistré le : 03 oct. 2014 11:19
Localisation : 31

Re: Misez p'tit Optimisez n°96 : Combien de bits à un dans cet entier ?

Message par Gege34 »

Le bon vieux test que l'on fait passer au petit jeune avant de les embaucher pour savoir s'ils savent aligner 3 lignes de code.
Bon c'est pas le plus optimiser et ça fait un bon moment que j'ai pas codé en RPL, j'ai voulu n'utiliser que la stack et de la logique binaire :

Code : Tout sélectionner

« # 0d SWAP R->B
WHILE
    DUP # 0d ≠
REPEAT
    DUP # 1d AND
    ROT + SWAP
    SR
END
DROP B->R »
Modifié en dernier par Gege34 le 26 sept. 2020 22:24, modifié 1 fois.
Commodore (64/128/Amiga), HP (28/41/48/50/71/75/200/Prime) et autres (Ti, Canon X07, Psion, Casio, Palm, Thomson, Exl, Amstrad)
Avatar du membre
pcscote
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 160
Enregistré le : 11 juil. 2018 01:06
Localisation : Québec/Canada

Re: Misez p'tit Optimisez n°96 : Combien de bits à un dans cet entier ?

Message par pcscote »

Solution RPN pour HP-41: (30 octets, aucune variable)

Code : Tout sélectionner

LBL "BC"
0
X<>Y
ABS
LBL 00
INT
X=0?
GTO 01
ENTER
ENTER
2
MOD
ST+ Z
RDN
LASTX
/
GTO 00
LBL 01
RDN
END
Sylvain
Calculatrices et Pockets HP > J'ai tous les modèles, manuels, accessoires et périphériques, mes préférés: 41, 71 & 75.
Techno : 41 > 41CL, MLDL2K, Clonix-d, NoV-64d, MAXX | 71 > FRAM71, MultiMod | IL > PIL-Box, PIL-IO, GPIO | ...
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Re: Misez p'tit Optimisez n°96 : Combien de bits à un dans cet entier ?

Message par Gilles59 »

Une version pour Casio FX-602P en 16 pas en comptant l'entête (15 sinon)

Code : Tout sélectionner

[P0]
 MAC
 LBL0
  = / 2 - x=0 GOTO9
  FRAC x=0 GOTO0 ISZ GOTO0
 LBL9
  MR00 
Ca doit s'adapter facilement en RPN ;D

EDIT : je cafouille complétement en RPN avec ma 41L... Faudra que je lise la doc de HP41 lol ! L'idée c'est :

Code : Tout sélectionner

 0 
 STO 00
 RDN
*LBL 00 
 2
 /
 X=0? 
 GTO 99
 ENTER
 FRC
 X<>0? 
 1 
 ST+ 00
 RDN
 -
 GTO 00
*LBL 99
 RCL 00
Je ne sais même pas comment on entre x<>0? En plus ca ne doit probablement pas marcher et c'est plus long que mon prog 602P ;D
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3405
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit Optimisez n°96 : Combien de bits à un dans cet entier ?

Message par C.Ret »

1- En RPL
bernouilli92 a écrit : 26 sept. 2020 21:07

Code : Tout sélectionner

« 0 → N « WHILE DUP
          REPEAT 2 / DUP IP SWAP FP 2 * 'N' STO+ END 
          DROP N » »
Merci bernouilli92 pour ta réponse très rapide, comme souvent les utilisateurs de RPL sont les plus prompts à générer un code, toujours son système sous la main ! :)
J'aime bien quelques astuces que tu utilises;
  • utiliser une division par deux pour détecter la valeur des bits,
  • utiliser une variable locale comme compteur c'est plus lisible qu'une version utilisant la pile et qui contiendra donc un certain nombre de SWAP, ROLL ou ROT ROT supplémentaires,
  • enfin effectuer FP 2 * 'N' STO+ afin d'ajouter 0 ou 1 au compteur selon la résultat de la division
Malheureusement, utiliser la pile ou d'autre fonction pour extraire la valeur bit par bit peut être plus court pour cet MPO.
Par ailleurs, FP 2 * c'est un 2 MOD en un plus long.
Et je découvre que STO+ ne fonctionne pas sur HP-28S avec les variables locales :(
Gilles59 a écrit : 26 sept. 2020 21:34(UserRPL)

Code : Tout sélectionner

« BIN R->B ->STR "1" DUP SREPL  »
(newRPL)

Code : Tout sélectionner

« #0b SWAP + ->STR "1" DUP SREPL »
N'ayant pas d'HP-50g sous la main, je n'ai pas pu tester, mais j'ai un doute, je ne vois pas où le comptage des bits est effectuer ? D'ailleurs, je ne vois pas à quoi sert de remplacer les "1" par des "1" ?

Sur mon HP-28S (après avoir écrit un code pour palier à l'absence de la commande SREPL), en essayant 1968 j'obtiens "# 11110110000b" mais pas le nombre des bits à un :(

Il doit y avoir une astuce non documentée qui fait que SREPL compte les occurrences des "1" ? Je n'en ai pas trouvé trace dans la documentation fournie par HP :
HP50g / 49g+ / 48gII graphing calculator advanced user's manual
HP50g / 49g+ / 48gII graphing calculator advanced user's manual
MPO96 - HP50g advanced user manual.gif (26.32 Kio) Vu 10957 fois

Gege34 a écrit : 26 sept. 2020 22:19

Code : Tout sélectionner

« #0d SWAP R→B WHILE DUP #0d ≠
               REPEAT DUP #1d AND 
                      ROT + SWAP SR END
  DROP B→R »
Ah! Bien voilà une bonne idée transformer l'entier en entier binaire pour traiter le problème avec les instructions AND (logic AND) et SR (Shift Right) spécifiques et adaptées à ce type. Gros avantage, on peu alors aller compter jusqu'à des entiers de 64 bits; on pourrait alors vérifier que # 2305843009213693952d n'a que deux bits à un !
Génial !

Sans la dernière instruction B→R , on aurait le résultat exprimé en binaire, décimal, octal ou hexadécimal selon le mode en cours. Je me rend compte qu'il n'est donc pas nécessaire de spécifier un mode (DEC BIN HEX OCT ) pour que ton code fonctionne :)

Effectivement #1b AND est une alternative à FP 2 * quelque soit le mode sélectionné. Par contre, n 1 AND ne fonctionne pas en mode normal car n'effectue pas d'arithmétique binaire et renvoi toujours 1 sauf si l'argument n est nul.

Vos codes m'ont obligés à revoir mon propre code RPL en profondeur qui comme celui de Gilles59 ne contient pas d'instruction WHILLE ... REPEAT ... END, mais qui comme ceux de Gege34 et bernouilli92 effectue une boucle WHILE/REPEAT.

Je vais attendre encore un peu avant de poster, je sens que de nouvelles idées vont surgir :)



2- En RPN
pcscote a écrit : 26 sept. 2020 22:21

Code : Tout sélectionner

001 LBL "BC"
002   0  X<>Y  ABS
005   LBL 00
006     INT  X=0?  GTO 01
009     ENTER↑  ENTER↑  2  MOD  ST+ Z  RDN  LASTX  /  GTO 00
018   LBL 01
019     RDN
020 END
Voilà, une bonne idée utilisant 2 MOD et en effectuant le comptage directement dans un registre de la pile; J'ai eut la même idée.
L'instruction ABS m'intrigue, elle permet effectivement de traiter le cas où l'utilisateur aurait saisie un nombre négatif.
Elle est donc facultative. Il y a peut-être moyen de gagner quelques pas en organisant différemment la sortie de boucle principale :)
Gilles59 a écrit : 26 sept. 2020 23:09

Code : Tout sélectionner

002 0  STO 00  RDN
005*LBL 00 
006   2  /  X=0?  GTO 99
010   ENTER↑  FRC  X≠0?  1 
014   ST+ 00  RDN  -  GTO 00
018*LBL 99
019   RCL 00
J'ai renuméroté de 002 à 019 car pour tester sur mon HP-41C, j'ai dû insérer un label LBL de début et un END de fin pour séparer ce code des autres codes en mémoire. Sur les HP il n'y a pas les zone de programme comme font les CASIO.
Il est donc de la même taille que le code proposé par pcscote voir plus long si on économise l'instruction ABS et heureusement encore bien plus long que ma version.

Pour saisir X≠0? il faut utiliser la séquence de touches [XEQ] [ALPHA] [6] [_] [SIN] [_] [0] [3] [ALPHA], la touche [6] porte le caractère X, la touche [SIN] le H et le ≠ quand elle est préfixée et la touche [3] le ? final.

Ca ne marche pas car, contrairement au RPL, l'instruction de test X≠0? ne consomme pas son argument, ce qui fait que lorsque le 1 n'est pas inséré, le RDN drope le résultat du FRC et la soustraction ne se fait pas avec les bons arguments. :(

Pas facile de passer d'une machine à l'autre, les paradigmes de fonctionnement sont très différentes ou très proches mais piégés :)

Heureusement, bernouilli92 nous a donné une solution pour corriger ce code, utilisons FRC 2 * :

Code : Tout sélectionner

001*LBL "b.G.C." 
002   0  STO 00  RDN
005*  LBL 00 
006     2  /  X=0?  GTO 99
010     ENTER↑  FRC  RCL X  2  *  ST+ 00  RDN  -  GTO 00
020*  LBL 99
021     RCL 00
022 END
C'est malheureusement plus long

J'ai plus court pour HP-41C, mais j'attends encore un peu pour voir si les idées et code à venir ne vont pas là aussi m'obliger à réformer mon code.
J'attends aussi quelque exemple sur HP Classic ou Voyager dont l'usage de la pile sera certainement diffèrent.


3- En CASIO keystroke
Gilles59 a écrit : 26 sept. 2020 23:09

Code : Tout sélectionner

[P0]
 MAC                          001
 LBL0                         002
  = / 2 - x=0 GOTO9           008
  FRAC x=0 GOTO0              010
  ISZ GOTO0                   013
 LBL9                         014
  MR00                        015
Utiliser la division par deux est une bonne idée. Je ne savais pas comment faire sur mon fx-602P, je vais suivre cette voie.
Retirer la partie fractionnaire au résultat de la division est excellente, cela évite d'utiliser INT et simplifie énormément la boucle principale.
Mais tous ces GOTO, cela fait un peu spaghetti, je vais voir si un plat de nouilles ne serait pas moins copieux :D


4- En pocket BASIC

Tiens, bizarre encore rien


5- En AOS et autre keystroke TI

L'absence des TI-57/58/59 à chaque MPO devient inquiétante. Il y a-t-il encore de ces modèles en fonctionnement. C'est dommage, ce sont des machines qui avaient marquées par leurs performances l'histoire du calcul de poches.

Je vais préparer quelque chose sur ma TI-57 lcd.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2142
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Misez p'tit Optimisez n°96 : Combien de bits à un dans cet entier ?

Message par cgh »

C.Ret a écrit : 27 sept. 2020 09:45 L'absence des TI-57/58/59 à chaque MPO devient inquiétante. Il y a-t-il encore de ces modèles en fonctionnement. C'est dommage, ce sont des machines qui avaient marquées par leurs performances l'histoire du calcul de poches.
Tout a fait d'accord ! Les veberables TI sont absentes et c'est fort dommage, surtout la TI57, veritable merveille sur laquelle nombre d'entre-nous firent leurs premiers pas de programmation :geek:
Du coup, sur ma TI57 LED rouges:

Code : Tout sélectionner

00   32 1	STO 1
01   00   	0
02   32 0	STO 0
03   22   	x<>t
04   86 0	Lbl 0
05   02   	2
06  -39 1	INV Prd 1
07   33 1	RCL 1
08   66   	x=t
09   51 9	GTO 9
10  -49   	INV Int
11  -34 1	INV SUM 1
12   34 0	SUM 0
13   34 0	SUM 0
14   51 0	GTO 0
15   86 9	Lbl 9
16   33 0	RCL 0
17   81   	R/S
Modifié en dernier par cgh le 27 sept. 2020 11:49, modifié 2 fois.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Re: Misez p'tit Optimisez n°96 : Combien de bits à un dans cet entier ?

Message par Gilles59 »

Intéressant ce MPO ;D Oui C.ret je pense que j'ai le même problème pour passer du RPL->RPN que ceux qui sont passé du RPN->RPL ;D Le RPL est plus logique (d'autres diront le contraire), en tout cas plus radical dans sa logique polonaise inverse. Il hérite plus du Forth que du RPN en fait. Dès que j'ai un peu de temps je vais lire le manuel dH41 et faire quelques tests, car là je souffre trop lol!

Voici une nouvelle version RPL et NewRPL :

Code : Tout sélectionner

«
 0 SWAP
 DO 2 IDIV2 ROT + SWAP UNTIL DUP NOT END
 DROP
»
Pour une mystérieuse raison, la 50g ne veut exécuter IDIV2 qu'en mode Radian (?). Le NewRPL s'en moque à juste titre
A propos d'IDIV2 :
IDIV2
Type: Command
Description: For two integers, a and b, returns the integer part of a/b, and the remainder, r.

Input: Level 2 : a
Level 1 : b
Output: Level 2 : The integer part of a/b
Level 1 : The remainder
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
Avatar du membre
bernouilli92
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5230
Enregistré le : 21 nov. 2012 13:03
Localisation : Ile de France

Re: Misez p'tit Optimisez n°96 : Combien de bits à un dans cet entier ?

Message par bernouilli92 »

@Gilles59 pourquoi pas un while au lieu d’un do? Cela permet d’éviter le not.

@C.Ret : j’ai utilisé FP 2 * car j’avais déjà divisé par 2 et je voulais réutiliser le résultat mais tu as raison, on peut économiser une opération en faisant le DUP avant la division par 2 et faire un 2 MOD ensuite :

Code : Tout sélectionner


« 0 → N
  «
    WHILE DUP
    REPEAT 
      DUP 2 / IP 
      SWAP 2 MOD 'N' STO+
    END DROP N
  »
»
HP, Casio, Sharp, Psion, quelques TI et divers autres
Avatar du membre
dprtl
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 463
Enregistré le : 27 janv. 2013 00:26
Localisation : Strasbourg
Contact :

Re: Misez p'tit Optimisez n°96 : Combien de bits à un dans cet entier ?

Message par dprtl »

Voici ma méthode en Basic Casio (PB-1000, FX-850P, etc.), avec un nombre d'itérations réduit :

Code : Tout sélectionner

10 INPUT N:N$=HEX$(N):N=0
20 FOR I=1 TO 4:C$=MID$(N$,I,1)
30 IF C$="0" THEN 80
40 IF C$="F" THEN N=N+4:GOTO 80
50 IF C$="1" OR C$="4" OR C$="8" THEN N=N+1:GOTO 80
60 IF C$="7" OR C$="B" OR C$="D" OR C$="E" THEN N=N+3:GOTO 80
70 N=N+2
80 NEXT I:PRINT N
L'inconvénient, c'est que l'argument de la fonction embarquée HEX$() est limité à 65535. On pourrait en écrire une autre en assembleur :-)

EDIT : un bug s'est glissé à la ligne 50, voir les réponses ci-après...
Modifié en dernier par dprtl le 27 sept. 2020 20:26, modifié 2 fois.
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2142
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Misez p'tit Optimisez n°96 : Combien de bits à un dans cet entier ?

Message par cgh »

Sur HP41C:

Code : Tout sélectionner

00 LBL "MPO96"
01 INT
02 CLST
03 LBL 00
04 X<> L
05 X=Y?
06 GTO 01
07 2
08 /
09 FRC
10 ST+ Z
11 ST+ Z
12 ST- L
13 GTO 00
14 LBL 01
15 X<> Z
16 END
Le programme fait 36 octets avec le label; 27 sans le label "MPO96" :)
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
Avatar du membre
Danny
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1248
Enregistré le : 28 déc. 2013 16:34

Re: Misez p'tit Optimisez n°96 : Combien de bits à un dans cet entier ?

Message par Danny »

En ce moment je suis sur Casio, donc une version en LMS (ça s'appelle bien comme ça, le langage des fx-7000G et famille ?) :

Code : Tout sélectionner

? -> N
0 -> B
Lbl 0
N / 2 -> D
Int D -> N
Frac D != 0 => Isz B
N > 0 => Goto 0
B
? Apple, Atari, Canon, Casio, ????????????, HP, Psion, Sharp, Tandy... même TI.
Répondre

Retourner vers « Tous les Pockets »