CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

J´aide les personne en C/C++

Koyo-K
Koyo-K
Niveau 9
27 juillet 2004 à 17:34:42

Salut :)
JYY tu dis que le ~ est le not bit a bit. J´ai deja vu qu´il existe des trucs " bits a bits" comme unsigned char je crois, mais je vois pas a quoi ca sert et ce qu´il y a de different avec le not emoloye sous le signe ! .

En fait je comprends pas bien le terme " bit a bit" ( je sais ce qu´est un bit mais dit comme ca on a l´impression qu´on touche directement aux entrailles du programme et ca me parait bizarre) et l´utilite de manipuler les bits 1 a 1.

Koyo-K
Koyo-K
Niveau 9
27 juillet 2004 à 17:41:02

" not emoloye" -> " not employe"

JeanYvesYves
JeanYvesYves
Niveau 10
27 juillet 2004 à 17:42:45

bit a bit veut dire qu´on le fait pour chaque bit :

imagine un codage sous 8 bits :
tu as le nombre 6 codé sous :

00000110 ( = 6)

~6 te donne :

11111001 ( = 249)

! 6 te donne : 0
car ( 6 est un nombre positif non nul : donc c´est " vrai", le contraire de vrai est " 0" -> faux)

Il existe également & | ^ < < > >
va voir mon tuto
http://www.fvirtman.fr.st
chapitre G.8.

Koyo-K
Koyo-K
Niveau 9
27 juillet 2004 à 17:48:52

OK ( j´en suis pas encore au G.8 je reprends mon bouquin en marquant cette fois des notes alors je me renseigne par la meme occaz histoire de rajouter des infos).
Le principe du unsigned char par contre là non plus je capte pas ( en fait là c´est que je savais pas qu´il y avait des caracteres signes et non signes).

JeanYvesYves
JeanYvesYves
Niveau 10
27 juillet 2004 à 17:55:03

en fait, char n´est pas forcément un caractere :

avant tout, le type char, est un nombre, codé sous 1 octet, signé :
donc de -128 à +127
le unsigned char est un nombre de 1 octet non signé :
de 0 à 255

tu peux manipuler les bits de n´importe quel type de données, int , long, short, unsigned ou signed, comme tu le sens. Il n´y a rien de spécifique pour le binaire : de toute façon, une fois que tu regardes le code binaire, ce n´est pas important de savoir si c´est signé ou non signé.
-> c´est juste l´interprétation que tu vas en faire.

De meme, on stocke les caracteres dans des char, mais pour l´ordi, un char est un nombre avant tout.
Qaund tu dis ´A´ ça vaut dire " code ASCII de A" ( a savoir 65)
l´ordi voit toujours des nombres. C´est au moment ou tu fais ton cout ou ton printf que tu dis sous quel forme tu veux afficher la chose.

Pour te prouver qu´il n´a aucun probleme avec ça, essaie de faire afficher :

´A´ + 2

tu verras qu´il te sortira ´C´

pour lui, pas de soucis.

Koyo-K
Koyo-K
Niveau 9
27 juillet 2004 à 18:01:44

Est-ce que c´est tout le temps sur un octet ? Parce que ca change les valeurs si on ne prend qu´un quarté.
Encore une question qui sâoule : c´est quoi l´utilite du not bit a bit ? A mon avis on ne peut que s´emmeler les pinceaux avec cet operateur.

JeanYvesYves
JeanYvesYves
Niveau 10
27 juillet 2004 à 18:07:16

non, tu peux travailler sur 1 octet, 2 ou 4
tout dépend du type porteur ( char, short, long...):

genre si tu fais

~6 : voila ce que ça te donne :

unsigned char : 249
char : -7
unsigned long : 4milliards et qq . ..

il suffit de raisonner bit a bit

l´utilité de cet opérateur n´est pas courante pour ce que tu vas en faire.
ça sert dans la compression, le calcul de cryptage, des choses comme ça, ainsi que les optimisations tres bas niveau.

Ne te casse pas la tete avec tout ça :) a mon avis, tu n´en auras pas besoin pour le moment.

Koyo-K
Koyo-K
Niveau 9
27 juillet 2004 à 18:14:19

Je commence enfin a y voir plus clair mais je suis content d´apprendre que ca me servira pas dans l´immediat :hap:

JeanYvesYves
JeanYvesYves
Niveau 10
27 juillet 2004 à 18:16:26

clair, tu peux largement t´en passer :)

JeanYvesYves
JeanYvesYves
Niveau 10
27 juillet 2004 à 18:21:34

ces opérateurs ( enfin surtout les & | . ..)
pourraient te servir genre si tu as dans l´idée de stocker énormément de données ( et que tu veux qu´elle prennent le moins de place possible -> otpimisations) pour éviter de faire exploser ta mémoire...

cependant, il existe des trucs qui t´évitent de mettre les doigts dans le binaire :
- SDL bit_vector
qui te stocke un tableau de bits en mémoire ( ça te prend donc 8 fois moins de place que si tu faisais un tableau de char que tu mettrais a 0 ou 1)
tu te sers facilement de ça, sans a t´occuper de comment c´est fait.
- l´opérateur : dans une structure qui te permet de creer des variables de 1 bit ! !
( voir mon tuto : chapitre G.6. mais si tu n´en es pas encore la, rien ne t´empeche d´aller voir comment ça marche :))

lag-it
lag-it
Niveau 10
27 juillet 2004 à 21:10:33

C´est pas STL bit_vector plutôt :-))) ?

overkill666
overkill666
Niveau 8
28 juillet 2004 à 01:22:28

Salut tout le monde j´ai une question... Lorsque j´alloue de la mémir à l´aide de la fonction malloc et d´un pointeur " pointeur". Comment faire pour que je puisse par exemple placer un tableau dans la partie allouée?je m´explique..

  1. include < stdio.h>
  2. include < stdlib.h>

int main()
{
void *pointeur;
char tableau[7]={Robert};

pointeur = tableau;

if((pointeur = malloc(sizeof(7 * char))) == NULL)
{
printf(" Impossible d´allouer la memoire.\n");
}

Le code n´est pa fini mais vous aurez remarqué le pointeur et le tableau dont je parle.

kokoala
kokoala
Niveau 7
28 juillet 2004 à 10:13:28

si tu connais la taille de ton tableau, je vois pas trop pourquoi tu fais un malloc...

int N;
char *T;
scanf("%d",&);
T = malloc(N*sizeof(char));

à partir de là, T se comporte comme une chaine de caracteres. donc T[0], T[1], etc

JeanYvesYves
JeanYvesYves
Niveau 10
28 juillet 2004 à 15:42:10

lag-it > en effet :)

overkill666 >
ne cree pas de void* pour ce que tu veux faire :
voici qq chose de + simple :

char* t;
t=(char*)malloc(sizeof(char)*7)); / / ne met pas 7 dans le sizeof

t[0]=´R´; / / par exemple

. ...

free(t);

Mordorik
Mordorik
Niveau 10
28 juillet 2004 à 15:44:16

salut tout le monde, je me demande si c´est possible d´entrer une variable de type char et qu´ensuite l´ordi la reconnaisse, du style if ( char=oui) alors est ce que c´est possible ?
merci de me repondre
@+

JeanYvesYves
JeanYvesYves
Niveau 10
28 juillet 2004 à 15:49:54

tout a fait !

je ne sais pas si tu preferes cin ou scanf :

char mot[100];
scanf("%s",mot);
if ( strcmp(mot,"oui")==0)
{
/ / ce qu´il se passe si on dit oui.
}

OU

char mot[100];
cin > > mot;
if ( strcmp(mot,"oui")==0)
{
/ / ce qu´il se passe si on dit oui.
}

Mordorik
Mordorik
Niveau 10
28 juillet 2004 à 15:53:44

ouais mais je n´imaginais pas que ça se faisait comme ça on ne peut pas faire plutôt :
char mot [100]
cin > > mot
if ( mot=oui)
{
/ /instructions
}
est ce que ça rest correct comme demarche ?

JeanYvesYves
JeanYvesYves
Niveau 10
28 juillet 2004 à 15:55:52

justement non :

mot en lui meme est un pointeur.
de ce fait si le compares a un autre pointeur, ça va te renvoyer faux.

Pour les chaines de caracteres, emploie strcmp

sinon, utilise STL :

string mot;
cin > > mot;
if ( mot=="oui")
{
/ / instructions
}

ça t´enleve pas mal de difficultés :)

Ruffi
Ruffi
Niveau 9
28 juillet 2004 à 16:01:08

if(mot=oui)
pas bon
raison :

pour faire une comparaison en regle general : on fait ==
pour faire une comparaison entre 2 chaine de caractere : if(strcmp(str1,str2)==0)

Pour copier une variable dans une autre : =
Pour copier une chaine de caractere : strcpy(str1,str2)

Donc il faudrai que tu fasse sa :
if ( strcmp(mot,"oui")==0 )
{
/ /instructions
}

JeanYvesYves
JeanYvesYves
Niveau 10
28 juillet 2004 à 16:01:15

exemple complet :

  1. include < iostream>
  2. include < string>

using namespace std;

int main()
{
string mot;
cin > > mot;
if ( mot=="oui")
cout < < " OK" < < endl;
else
cout < < " NO" < < endl;
return 0;
}

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment