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

c# - Complémenter des bits ?

Eric_Ramzy
Eric_Ramzy
Niveau 13
12 mai 2010 à 11:39:43

Bonjour,

il faut que je fasse un petit exercice et je me demandais si peut être quelqu'un pourrait m'aider quelque peu :-)

En gros il faut que je créer une fonction qui complémente des bits.

en entrée prenons : 101

en sortie il faut donc "l'inverse" : 010

(mon exercice est un peu plus compliqué mais c'est sur ce point qu'il me faut de l'aide précisément)

déjà pour complémenter j'ai trouvé " x = ~x ", mais j'ai pas encore réussi a le faire marcher correctement donc si quelqu'un connait mieux merci de me le dire. : )
j'en suis là :
Console.WriteLine("Entrée");
x = Console.ReadLine();

x[0] = ~x[0];
x[1] = ~x[1];
Console.WriteLine(x);
Console.ReadKey();

ça ne fonctionne pas car l'index est en read only qu'il me dit :-/

des idées ?

merci

tbop2
tbop2
Niveau 10
12 mai 2010 à 14:00:39

= ~ tiens j'avais jamais vu ce truc auparavant.

Et bien apparemment x ne peut pas être changé car comme il te le dit il est en lecture seule (je trouve ça étrange je me souvenais pas de ça mais bon). Je te dirais de procéder à une copie de x dans un autre tableau et tu modifie ce tableau.

Cela dit tu n'as pas mis la définition de x dans ton code.

Eric_Ramzy
Eric_Ramzy
Niveau 13
12 mai 2010 à 15:30:25

Bon au final le =~ ne fonctionne pas du tout :p)
J'ai fais un truc de ce style :

for (int a = 0; a < Convert.ToInt32(n); a++)
{
if ( x[i]==0 )
{
champ[i] = "1";

}

if ( x[i]==1 )
{
champ[i] = "0";
}

bonne journée.

godrik
godrik
Niveau 30
12 mai 2010 à 16:01:07

Je ne sais pas pourquoi ca ne marche pas en C#, mais ca marche parfaitement en C.

$ cat foo.c

  1. include <stdio.h>

int main()
{
printf ("%d\n",~16);
return 0;
}
$ make foo
cc foo.c -o foo
$ ./foo
-17

dnob700
dnob700
Niveau 10
12 mai 2010 à 23:41:36

Ça ne fonctionne pas car en C# les chaînes sont immutables.

L'opérateur '~' agit sur des bits et non pas sur des caractères. Il fonctionne très bien mais tu t'en sers mal. Effectivement, si tu veux que l'utilisateur tape une chaîne en "binaire", le plus simple est de procéder comme tu le fait en traitant directement les caractères '0' et '1'.

tbop2
tbop2
Niveau 10
13 mai 2010 à 12:13:28

if ( x[i]==0 )
{
champ[i] = "1";

}

if ( x[i]==1 )
{
champ[i] = "0";
}

En une ligne : champ[i] = (champ[i] + 1)%2

godrik
godrik
Niveau 30
13 mai 2010 à 15:45:45

les operateurs + et % fonctionne en C# sur les chaine de caractere ?

tbop2
tbop2
Niveau 10
13 mai 2010 à 16:34:13

Mais pourquoi utiliserait-on une chaine de caractère pour stocker des bits ????

godrik
godrik
Niveau 30
13 mai 2010 à 16:38:45

<troll>Une fois que tu fais du C#, tu n'es plus a ca pres.</troll>

dnob700
dnob700
Niveau 10
13 mai 2010 à 19:30:05

Et ça permet de lire la chaîne "en binaire" facilement, depuis l'entrée standard sans se poser de question (enfin pas trop).

tbop2
tbop2
Niveau 10
13 mai 2010 à 20:25:09

Oui mais comment dire ça proprement.

Un programme qui a pour objectif de s'amuser sur des bits doit, à mon sens, avoir des fonctions qui agissent sur de vrais tableaux de bits, quitte à avoir une fonction convertStringToBytes().

Mais je trouve que c'est un non sens total de manipuler un tableau de caractère comme ça.

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