Accés au [$i] bit [Résolu]

Signaler
Messages postés
49
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
5 mai 2017
-
Messages postés
49
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
5 mai 2017
-
bonne après midi mes amis,

Voilà mon probleme :
<?php
$Bin = 10010011 ;
// 01234567


je veux accéder au bit numéro 5 , comment je fais.


Merci beaucoup
Bonne après midi.

6 réponses

Messages postés
158
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
17 juin 2010

Il manquait un ; dans mon code précédent :
<?php
$nbr_binaire = '10010011';
$masque_binaire = '10000';
$nbr_decimal =  bindec($nbr_binaire);
$masque_decimal = bindec($masque_binaire);
$bit5 = $nbr_binaire & $masque_decimal;


Si $bit5 est différent de 0 c'est que le cinquième bit de $nbr_binaire vaut 1
Messages postés
49
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
5 mai 2017

Merci beaucoup mon ami pour ta réponse, malgré que ce problème est résolu dans :
[b]
Changer un bit dans une chaine binaire d'un octet ???/b à l'adresse
Tapez le texte de l'url ici.

Où syndrael à répondu :
$b1 = 10010111;
function invertRow($n,$row){
 return decbin(bindec($n)^(pow(2,$row-1)));
}
echo invertRow($b1,5); //On inverse le 5ème en partant de la droite..
//On obtient 10000111


et c'était la meilleur réponse et la solution au problème, merci à lui.


Agréable journée.
Messages postés
158
Date d'inscription
samedi 8 février 2003
Statut
Membre
Dernière intervention
17 juin 2010

Tu peux y arriver en faisant un masque binaire.
Dans le masque tu ne mets à 1 que le bit que tu veux étudier.
Ensuite il ne reste plus qu'à utiliser l'opérateur &

<?php
$nbr_binaire = '10010011';
$masque_binaire = '10000'
$nbr_decimal =  bindec($nbr_binaire);
$masque_decimal = bindec($masque_binaire);
$bit5 = $nbr_binaire & $masque_decimal;
Messages postés
49
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
5 mai 2017

merci beaucoup huberdine, c'était vraiment une aide précieuse.
Messages postés
49
Date d'inscription
samedi 7 juillet 2007
Statut
Membre
Dernière intervention
5 mai 2017

re,

enfaite, j'ai oublier de préciser que mon propos d'accéder au bit, c'est de me permettre de le changer.

Comment faire ?



Merci.
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
7
Salut,

Inversion (0 -> 1 et 1 -> 0)
<?php
$nouveau = $ancien ^ bindec('00010000');
?>


Mise à zéro (0->0 et 1->0)
<?php
$nouveau = $ancien & bindec('11101111');
?>


Mettre à 1 (0->1 et 1->1)
<?php
$nouveau = $ancien | bindec('00010000');
?>