Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

architecture et OS 32/64 bits

19 réponses
Avatar
marioski
bonjour,

un professeur m'a expliqu=C3=A9 que si l'architecture d'un pc est de 32 bit=
s,en langage C un int prendra 32 bits
Si l'architecture d'un pc est de 64 bits,un int prendra 64 bits.
Ma question est la suivante:
Si sur une architecture 64 bits,j'installe un OS 32 bits,cet int prendra 32=
ou 64 bits?

merci de votre aide

10 réponses

1 2
Avatar
Droger Jean-Paul
marioski avait énoncé :
bonjour,
un professeur m'a expliqué que si l'architecture d'un pc est de 32 bits,en
langage C un int prendra 32 bits Si l'architecture d'un pc est de 64 bits,un
int prendra 64 bits. Ma question est la suivante:
Si sur une architecture 64 bits,j'installe un OS 32 bits,cet int prendra 32
ou 64 bits?
merci de votre aide

je ne sais pas ce qu'est "un int" ...
Votre question est incomplète car la façon de gérer les variables
dépend de l'OS vraisemblablement .... en tous les cas cela était vrai
du temps un peu lointain où je m'intéressais de près aux calculs
scientifiques ...
mais là cela a peut être changé.
Bonne fin de semaine.
--
Pour m'envoyer un mail, remplacer anti par droger , fruit par wanadoo
et supprimer .invalid; to send me directly a mail replace anti with
droger, fruit with wanadoo and delete .invalid;
Avatar
Olivier Miakinen
Le 14/06/2017 09:06, Droger Jean-Paul répondait au dernier troll de
marioski :
un professeur m'a expliqué que si l'architecture d'un pc est de 32 bits,en
langage C un int prendra 32 bits Si l'architecture d'un pc est de 64 bits,un
int prendra 64 bits. Ma question est la suivante:
Si sur une architecture 64 bits,j'installe un OS 32 bits,cet int prendra 32
ou 64 bits?

je ne sais pas ce qu'est "un int" ...
Votre question est incomplète car la façon de gérer les variables
dépend de l'OS vraisemblablement .... en tous les cas cela était vrai
du temps un peu lointain où je m'intéressais de près aux calculs
scientifiques ...

Elle dépend aussi du langage (ici il parle de C) et surtout du
compilateur. On peut très bien avoir sur un ordinateur 64 bits un
compilateur C dont les int ne font que 32 bits (voire 16 bits).
L'inverse est possible également, même si cela force à coder les
opérations 64 bits sous forme de séries d'opérations 16 bits
quand on ne peut pas demander au processeur de le faire tout seul.
Mais bon, marioski continue à troller sur tous les groupes et c'est
très bien ainsi.
--
Olivier Miakinen
Avatar
Nicolas George
marioski , dans le message
, a écrit :
un professeur m'a expliqué que si l'architecture d'un pc est de 32
bits,en langage C un int prendra 32 bits
Si l'architecture d'un pc est de 64 bits,un int prendra 64 bits.

Non, il se trompe. Le processeur possède les circuits pour calculer sur
des entiers 64 bits, mais le système décide à quel point il s'en sert.
En pratique, de nos jours, les ABI pour processeurs 64 bits gardent int
sur 32 bits.
Si sur une architecture 64 bits,j'installe un OS 32 bits,cet int
prendra 32 ou 64 bits?

Ça dépend de l'OS, mais le choix le plus courant de nos jours est
32 bits.
Avatar
olivier B.
Le 14/06/2017 à 10:55, Nicolas George a écrit :
marioski , dans le message
, a écrit :
un professeur m'a expliqué que si l'architecture d'un pc est de 32
bits,en langage C un int prendra 32 bits
Si l'architecture d'un pc est de 64 bits,un int prendra 64 bits.

Non, il se trompe. Le processeur possède les circuits pour calculer sur
des entiers 64 bits, mais le système décide à quel point il s'en sert.
En pratique, de nos jours, les ABI pour processeurs 64 bits gardent int
sur 32 bits.

peut-être que la question ne porte pas sur le calcul mais sur la
ressource, cad stockage mémoire, 64 bits étant utilisés pour en
mémoriser 32, un peu comme un fichier de 1k occupera une place disque
différente selon la taille de cluster ?
Avatar
olivier B.
Le 14/06/2017 à 09:06, Droger Jean-Paul a écrit :
marioski avait énoncé :
bonjour,

un professeur m'a expliqué que si l'architecture d'un pc est de 32
bits,en
langage C un int prendra 32 bits Si l'architecture d'un pc est de 64
bits,un
int prendra 64 bits. Ma question est la suivante:
Si sur une architecture 64 bits,j'installe un OS 32 bits,cet int prendra
32
ou 64 bits?

merci de votre aide

je ne sais pas ce qu'est "un int" ...

Voir ici:
http://www.commentcamarche.net/contents/121-langage-c-les-types-de-donnees

ou ici si on comprend mal:
https://fr.wikipedia.org/wiki/Ent
Avatar
Nicolas George
olivier B. , dans le message
, a écrit :
peut-être que la question ne porte pas sur le calcul mais sur la
ressource, cad stockage mémoire, 64 bits étant utilisés pour en
mémoriser 32, un peu comme un fichier de 1k occupera une place disque
différente selon la taille de cluster ?

Non.
Et je déconseille de chercher à répondre à une question sans en
comprendre les termes.
Avatar
Pierre Maurette
marioski :
bonjour,
un professeur m'a expliqué que si l'architecture d'un pc est de 32 bits,en
langage C un int prendra 32 bits Si l'architecture d'un pc est de 64 bits,un
int prendra 64 bits.

Déjà, c'est simplement faux, puisque sur toutes les machines et
architectures 32 et 64, le int fait 32 bits. Pour avoir moins, il faut
descendre vers des archis 8 et 16, pour avoir plus des trucs aussi
courants qu'un Cray.
Sinon, c'était presque vrai, donc faux. Peut-être le professeur a-t-il
expliqué: si l'architecture cible est "32bits", en langage C un int
prendra 32 bits, si l'architecture cible est "64bits", en langage C un
int prendra 64 bits.
La phrase initiale a du sens si l'architecture de l'OS réplique celle
du PC, ce qui est loin d'être le cas normal, et si l'application tourne
(doit tourner) dans le mode natif de l'OS, ce qui est plus ou moins
l'exception (nombreux exécutables 32bits sous OS 64bits au moins chez
Microsoft). A ce moment-là, on parle de la taille de l'int du code [à
l'origine de ce] qui tourne sur ce PC, ou de celui qu'on utilise en
développant pour cette même plateforme.
Machines, OSs et applis, même en se limitant aux archis Intel/AMD
récentes et juste à de exemples, c'est un peu le bordel. Je ne détaille
pas, sachez simplement qu'on a accès naturellement à des applis 32bits
sous W10 64bit, ou à des applis 16bits (genre DOS) sous XP32.
Retour sur la notion de "int en C". Ce que j'appelle à tort
"compilateur" est en réalité la "toolchain" qui permet de générer à
partir de code source les exécutables qui me font envie.
Un compilateur a une seule cible, ou plusieurs. Dans certaines
conditions (celles du rêve, en général) le même code source peut
alimenter plusieurs compilateurs, pour multiplier les cibles. En fait,
vu de l'environnement de travail, appeler plusieurs compilateurs ou un
seul avec plusieurs cibles, c'est transparent, j'obtiens plusieurs
résultats.
Un compilateur est un exécutable, il peut lui-même être compilé vers
telle ou telle plateforme. Ainsi, ou par tout autre moyen, je pourrai
compiler sur une machine n'ayant rien à voir avec la cible finale. Le
nom général, c'est cross-développement.
L'int (et le unsigned, ou unsigned int) est le bout de mémoire le plus
naturel du processeur ciblé. Très généralement le plus rapide,
pratiquement jamais le plus compact.
Il doit être utilisé à chaque fois que c'est possible, mais en fait
c'est assez rare, surtout de la cuisine interne à durée de vie limités,
typiquement un index de boucle. Pour compter de 0 à 15, je *dois*
utiliser un int, même si un char suffirait. Hum, un short doit être
acceptable.
Là il y a un point important: les fabricants de compilateurs (en gros
les GNU-boys et MSVC-guys) ont envisagé le portage de code et décidé de
la taille de l'int, mais pas tout seuls: le fondeurs (Intel, AMD)
avaient anticipé en faisant des opérations 32bits des choses natives et
rapides, pour les mêmes raisons. Et sans doute aussi pour éviter de
gaspiller trop de mémoire à 0..0 (ou F..F) quand 32bits suffisaient. Et
peut-être pour favoriser des organisations mémoire plus économiques.
Le plus souvent la taille de la donnée sera importante, on utilisera
des types intxx_t à taille fixe, ou des types issus de bibliothèque .h,
par exemple jpeg.h pour le type d'un pixel (ça doit être autre chose,
peu importe).
Ma question est la suivante:
Si sur une architecture 64 bits,j'installe un OS 32 bits,cet int prendra 32
ou 64 bits?

Sur un programme tournant en 32bits (sous OS 64bits ou OS 32bits), si
vous déclarez un int, il prendra 32 bits
merci de votre aide

--
Pierre Maurette
Avatar
Nicolas George
Pierre Maurette , dans le message , a
écrit :
Déjà, c'est simplement faux, puisque sur toutes les machines et
architectures 32 et 64, le int fait 32 bits.
Peut-être le professeur a-t-il
expliqué: si l'architecture cible est "32bits", en langage C un int
prendra 32 bits, si l'architecture cible est "64bits", en langage C un
int prendra 64 bits.

Ces deux phrases se contredisent. C'est la première qui est exacte.
Avatar
Droger Jean-Paul
olivier B. a exprimé avec précision :
Le 14/06/2017 à 09:06, Droger Jean-Paul a écrit :
marioski avait énoncé :
bonjour,

un professeur m'a expliqué que si l'architecture d'un pc est de 32
bits,en
langage C un int prendra 32 bits Si l'architecture d'un pc est de 64
bits,un
int prendra 64 bits. Ma question est la suivante:
Si sur une architecture 64 bits,j'installe un OS 32 bits,cet int prendra
32
ou 64 bits?

merci de votre aide

je ne sais pas ce qu'est "un int" ...

Voir ici:
http://www.commentcamarche.net/contents/121-langage-c-les-types-de-donnees

ou ici si on comprend mal:
https://fr.wikipedia.org/wiki/Ent

merci, mais j'ai mis quelque temps pour trouver ce matin ... peuvent
pas utiliser soit Integer soit entier .. et là la réponse est assez
évidente
--
Pour m'envoyer un mail, remplacer anti par droger , fruit par wanadoo
et supprimer .invalid; to send me directly a mail replace anti with
droger, fruit with wanadoo and delete .invalid;
Avatar
Olivier Miakinen
Le 14/06/2017 16:51, Nicolas George répondait à Pierre Maurette :
Déjà, c'est simplement faux, puisque sur toutes les machines et
architectures 32 et 64, le int fait 32 bits.

Peut-être le professeur a-t-il
expliqué: si l'architecture cible est "32bits", en langage C un int
prendra 32 bits, si l'architecture cible est "64bits", en langage C un
int prendra 64 bits.

Ces deux phrases se contredisent.

Oui.
C'est la première qui est exacte.

Et encore. À moins que ça n'ait été reprécisé dans l'une des normes
successives de C, la taille d'un int n'a pas de valeur obligatoire,
pourvu qu'elle soit supérieure ou égale à celle d'un short et
inférieure ou égale à celle d'un long.
... mais c'est faire beaucoup de cas du dernier troll de Marioski
que de faire une réponse de plus de quelques lignes.
--
Olivier Miakinen
1 2