bonjour,
je viens chercher un éclaircissement sur une erreur qui survient lors de manipulation de bit sur un ulong ( donc non signé )
je voulais utiliser la fonction suivante :
elle me donne un jolie depassement de capacité pour des valeurs superieur a la valeur 60 ( ou 61 je c plus du coup )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Public Shared Function find_bit_poids_faible(ByVal rufus As ULong) As ULong Return CULng(rufus And (-(rufus))) End Function
que l on peut obtenir de la maniere suivante par exemple :
ulng(1) << 60
donc ce dépassement arithmétique, m oblige a faire la fonction suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Public Shared Function find_bit_poids_faible(ByVal rufus As ULong) As ULong Return ((rufus And (rufus - CULng(1)) Xor rufus)) End Function
ma question : pourquoi ??????????
le "-" alors que c un ulong ? ( conversion implicite en long ..???? )
question subsidiaire, je veux limiter au maximum les operations,
premiere fonction un "and"
seconde un "and" "xor" et un " -"
une astuce pour que la première fonctionne ( la valeur finale ne dépasse jamais la valeur max d un ulong ...)
d avance merci
Partager