Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/02/2007, à 16:28

space-cake

[Resolu] programmation en C : taille des opérandes

Bonjour,

j'ai une petite question concernant le C et la projet que j'ai en ce moment sur un ARM7

J'ai un registre de 9bits (rPDATF) . Je veux changer certain bits de ce registre, pour cela j'utilise un masque. Or en C, il n'existe aucun type de donnée à 9 bits, il n'y a que du 8 bits ou du 16 bits (voir plus).

Si je fais un masque : unsigned short MASQUE (j'ai donc du 16 bits) comment va se comporter le C si je fais
rPADTF = MASQUE & rPDATF;

(je règle la valeur de MASQUE pour ne mettre à zéro que certain bits)

Bref, ma question porte sur le C en général, comment le langage gère-t-il la différence de taille des opérandes ?

Dernière modification par space-cake (Le 08/02/2007, à 01:28)


site: http://www.sp4ce.net
blog: http://sp4ce.gaijininjapan.com

Hors ligne

#2 Le 05/02/2007, à 18:11

any

Re : [Resolu] programmation en C : taille des opérandes

sinon dans une structure tu peux definir le n nombre de bit avec ":n".

http://www.cs.cf.ac.uk/Dave/C/node13.html
    *  Reading external file formats -- non-standard file formats could be read in. E.g. 9 bit integers.

struct packed_struct {
         unsigned int f1:1;
         unsigned int f2:1;
         unsigned int f3:1;
         unsigned int f4:1;
         unsigned int type:4;
         unsigned int funny_int:9;
} pack;

#3 Le 08/02/2007, à 01:27

space-cake

Re : [Resolu] programmation en C : taille des opérandes

Salut,

en fait j'ai réfléchis un peu et je me suis rendu compte que mon problème était un peu débile... big_smile.

En effet j'avais mon registre de 9 bits (rPDATF) qui était en fait bien un short sur 16 bits, mais seuls les 9 premiers bits était porteur de sens au niveau materiel.

enfin voila smile

Sinon, si on fait une opération logique bit à bit avec de nombre de tailles différentes (par exemple un long avec un short) sur combien de bits est codés le résultat ?

à priori, je dirais que le résultat est de la taille du plus grand des deux opérandes (dans l'exemple on a donc un long à l'arrivée et le short a été transtypé en long) , mais je suis pas sûr...


site: http://www.sp4ce.net
blog: http://sp4ce.gaijininjapan.com

Hors ligne