Besoin d'aide en java

Kwarm Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
je débute en java, et j'aurais plusieurs questions à vous poser :) :
-je suis tombé sur ca <<< ou ca >>, ou | tenez un exemple de code que j'aimerais bien comprendre:
int i = (sArr[s++] & 0xff) << 16 | (sArr[s++] & 0xff) << 8 | (sArr[s++] & 0xff);
il n y a pas un site qui répertorie tout ce genre de structures spéciales ??
-que veut dire le f de par exemple :
double double= 12.20f
je ne l'ai jamais croisé celui-là, j'ai même demandé aux membres de mon entourage qui sont plus expérimenté en maths
-enfin, étant un débutant, je cherche un tuto sur la classe File() et toutes ses classes filles ... merci pour l'aide !!! et à bientôt ;) je suis déterminé à comprendre ce code compliqué :)


A voir également:

3 réponses

poukkid Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   11
 
Salut,

Hmm si tu est débutant, je te conseille de ne pas trop t'attarder sur ce code qui est assez compliqué et rentre dans le langage binaire de tes données, malgré tout si tu veux perséverer tu vas avoir du travail mais c'est très enrichissant et intéressant...

Le & est un "ET" logique et par exemple le fait de faire & 0xff (qui correspond à "11111111" va appliquer ce masque sur les huit premiers bits de poids faible de ta variable sArr[s++].

le | est un "OU" logique

le << ou >> permettent de décaler les bits dans un sens ou dans l'autre...
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
À noter que >> insère le bit de signe à gauche, contrairement à >>> qui insère toujours 0
On peut aussi trouver ~ et ^ (voir la liste des opérateurs)

Pour ta troisème question regarde La gestion des fichiers et des flux de données.
0
Kwarm Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
j'étais sur que c'était plutôt le || qui était un ou logique, alors j'ai fais une recherche , et je suis tombé sur un article de ce même site qui explique à peu près, (le | est un ou inclusif) j'ai de la la lecture ;)

par contre, ce que je ne comprend toujours pas, c'est les f qu'on retrouve dans les float/double, et ce 0xff que je ne comprend toujours pas --"
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Pour les entiers c'est une notation hexadécimale, FF (base 16) = 11111111 (base 2) = 255 (base 10)
Pour les flottants cela indique que c'est une valeur float (double par défaut)

Exemples :
System.out.println(0xFF);  // 255 en base 16 (grâce au préfixe 0x)
System.out.println(0377);  // 255 en base  8 (grâce au préfixe 0 )
System.out.println(255);   // 255 en base 10 (par défaut)

float f1 = 0.0;		// incorrect (0.0 est un double par défaut) 
float f2 = 0.0f;	//   correct
float f3 = (float) 0.0;	//   correct

Remarque : mettre un f pour un double (double x = 12.20f) entraîne une perte de précision vu que l'on convertit d'abord la valeur en float avant de le passer en double.
Il serait mieux de mettre alors un d (double x = 12.20d) ou de ne rien mettre (double x = 12.20)
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Voici un petit code qui devrait te permettre de voir comment se comportent les différentes notations pour les nombres :

static void afficher(int i)    { System.out.println("int\t"+i);    }
static void afficher(long l)   { System.out.println("long\t"+l);   }
static void afficher(float f)  { System.out.println("float\t"+f);  }
static void afficher(double d) { System.out.println("double\t"+d); }

public static void main(String...args)
{
    afficher(010);  // int	8
    afficher(0x10); // int	16
    afficher(10);   // int	10
    afficher(10L);  // long	10
    afficher(10F);  // float	10.0
    afficher(10D);  // double	10.0
    afficher(10.0); // double	10.0
}
0