IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Type uint16 et uint32 en Java


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    ingenieur informatique
    Inscrit en
    Août 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ingenieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 31
    Points : 28
    Points
    28
    Par défaut Type uint16 et uint32 en Java
    Salut ,

    J'ai un code en C que je dois le transférer en java.en java je peux pas impelmenter des variables de type uint16 et uint32. Donc quelle est la solution ?

    Merci Bien

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Kei,

    Il n'y a pas de type unsigned en Java !

    Eh oui, on peut se demander pourquoi une telle gigantesque lacune.
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    ingenieur informatique
    Inscrit en
    Août 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ingenieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 31
    Points : 28
    Points
    28
    Par défaut
    ET type int16 et int32 en java?

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Koa,

    Ce genre de question est aisément résolu en ouvrant/lisant n'importe quel livre/didacticiel sur Java, c'est absolument basique.

    Et à l'occasion, on peut faire un tour dans la définition du langage, ce qui n'est jamais du temps perdu.

    Si les cons volaient, il ferait nuit à midi.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2013
    Messages : 23
    Points : 28
    Points
    28
    Par défaut
    salut,
    cette extension comme JAR externe ne pourrait pas faire l'affaire?
    http://sourceforge.net/projects/juint/

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par nabil.g Voir le message
    cette extension comme JAR externe ne pourrait pas faire l'affaire?
    http://sourceforge.net/projects/juint/
    Elle utilise des objets à la place de types de base, et des méthodes à la place d'opérateurs. Ce qui fait donc une syntaxe assez lourde et des calculs très inefficaces.
    Mais quand c'est pas important, oui, c'est une manière de régler le problème sans se poser de question.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Points : 519
    Points
    519
    Billets dans le blog
    1
    Par défaut
    Slt
    C'est dommage, avec uint32, on peut obtenir une dynamique :0 -> 2^32, donc inutile de recourir a un float pour des valeurs 2^31 - 1 -> 2^32
    Dommage
    Bon courage

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par mohamine1989 Voir le message
    C'est dommage, avec uint32, on peut obtenir une dynamique :0 -> 2^32,
    Un long est aussi capable de contenir tout ça -_-°. Il n'y est pas limité, certes, ce n'est pas l'idéal. D'un autre côté c'est pas comme si on avait souvent des nombres supérieurs à 2G et qui doivent absolument être contraints < 4G.

    Citation Envoyé par mohamine1989 Voir le message
    donc inutile de recourir a un float pour des valeurs 2^31 - 1 -> 2^32
    Il ne faut pas utiliser de flottants pour ça de toute façon. Un long fait très bien l'affaire, la précision du float n'est pas suffisante, et les calculs double trop longs.

    J'ajoute que si on veut vraiment stocker des nombres limités à l'ensemble des valeurs de uint32, et qu'on est prêt à utiliser des "trucs" pour ça, on peut très bien décider que int peut le faire. int contient bel et bien un espace de 2^32 valeurs différentes. Il n'y a qu'à décider que les nombres négatifs n'existent pas et sont en réalité l'espace 2^31 -> 2^32 - 1. L'addition, la soustraction, la multiplication, la division, le modulo et l'égalité marchent parfaitement.
    Ce qui ne marche pas, c'est la conversion d'un type à l'autre, genre int -> String ou int -> long, le int sera considéré négatif par Java s'il dépasse 2 ^ 31 - 1. Il suffit de le savoir et de le gérer.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Kia,
    Citation Envoyé par thelvin Voir le message
    Un long est aussi capable de contenir tout ça -_-°. Il n'y est pas limité, certes, ce n'est pas l'idéal. D'un autre côté c'est pas comme si on avait souvent des nombres supérieurs à 2G et qui doivent absolument être contraints < 4G.



    Il ne faut pas utiliser de flottants pour ça de toute façon. Un long fait très bien l'affaire, la précision du float n'est pas suffisante, et les calculs double trop longs.

    J'ajoute que si on veut vraiment stocker des nombres limités à l'ensemble des valeurs de uint32, et qu'on est prêt à utiliser des "trucs" pour ça, on peut très bien décider que int peut le faire. int contient bel et bien un espace de 2^32 valeurs différentes. Il n'y a qu'à décider que les nombres négatifs n'existent pas et sont en réalité l'espace 2^31 -> 2^32 - 1. L'addition, la soustraction, la multiplication, la division, le modulo et l'égalité marchent parfaitement.
    Ce qui ne marche pas, c'est la conversion d'un type à l'autre, genre int -> String ou int -> long, le int sera considéré négatif par Java s'il dépasse 2 ^ 31 - 1. Il suffit de le savoir et de le gérer.
    Évidemment, pourquoi avoir un système qui permettrait de faire simple, quand on en a un qui oblige à faire compliqué.
    Si les cons volaient, il ferait nuit à midi.

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    les différences entre les signés et non signés sont très faibles, c'est pour ça que java ne les a jamais implémentés. Sans compter que ça complique fortement les chose quand on copie un signé dans un non signé et vice - versa.

    Comme dit thelvin, les opération de bases sont toutes les même. Oui un non signé peux aller jusque 2^32 (ou 2^64) et un signé est limité à un bit de moins. Mais en quoi est-ce un problème? La plupart des développeurs ne se posent même pas la question de savoir si il vaut mieux un int ou un short et utilisent le int par habitude. Donc visiblement, 16 bits de différence, ça ne change rien pour eux.

    Je fais du java depuis plus de 10 ans, et jamais l'absence de nombre signé ne m'a posé problème.

    Ici on parle de la conversion d'un code C. Le problème ne réside donc pas dans la présence ou non d'arithmétique non signée, mais dans l'idée qu'on puisse convertir un code d'un languages à un autre en changeant juste les définitions des variables.

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    au fait, il y a un exception. Il existe un type non signé sur 16 bit en java: char

  12. #12
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par droggo Voir le message
    Évidemment, pourquoi avoir un système qui permettrait de faire simple, quand on en a un qui oblige à faire compliqué.
    Oui enfin, long est un système très simple, faudrait voir à pas l'oublier.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Points : 519
    Points
    519
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par thelvin
    long est un système très simple
    Effectivement, sur 64bit en plus, très utile
    C'est juste pour dire qu'il vaut mieux éviter le calcul en double précision si possible bien sur pour éviter une baisse de performances
    Bon courage

Discussions similaires

  1. Utilité du type UINT16
    Par mattstriker dans le forum C++
    Réponses: 6
    Dernier message: 17/02/2009, 15h29
  2. Types mappés de WSDL vers Java
    Par romainw dans le forum Services Web
    Réponses: 4
    Dernier message: 14/12/2007, 14h12
  3. [fprintf] Ecrire des données de type uint16
    Par Nours féroce dans le forum MATLAB
    Réponses: 3
    Dernier message: 03/07/2007, 13h07
  4. Manipulation de fichier de type video,image,musique en java
    Par oldscrout dans le forum Multimédia
    Réponses: 13
    Dernier message: 07/06/2007, 10h40
  5. Réponses: 2
    Dernier message: 19/06/2006, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo