Czy zna ktoś operator bitowy: zerowanie bitowe? Nie ma tego w poradniku na stronce o operatorach oraz w internecie google nie chcą pomóc po polsku.
Najlepiej byłoby dla mnie, gdyby ktoś podrzucił składnię (jak to liczyć w C++) oraz zasadę jak to działa.
XOR na samym sobie spowoduje wyzerowanie
Czyli mam rozumieć, że np:
10(10) = 00001001
15(10) = 00001111
XOR = 11111001
Czy to chodzi o to?
I jak to zapisać, aby C++ operował na bitach?
Nie xor tylko and (&)... Maskujesz te bity, których nie chcesz usunąć, ew. negujesz maskę bitów do usunięcia.
Nie chodzi mi niestety o koniunkcję ( z tym dałbym sam sobie radę) tylko o zerowanie. Wydaje mi się, że xor byłoby na najbliżej, ale to tylko luźne, niczym nie potwierdzone opinie :)
A = 00001001
B = 00001111
jak chcesz wyzerować całość to XOR, bo
A XOR A = 00000000
B XOR B = 00000000
jak chcesz wyzerować tylko kawałek to AND za pomocą maski C
B = 00001111
C = 11111100
B AND C = 00001100
Jak całość to można też robić AND na NEGACJI:
A = 00001001
B = 00001111
~A = 11110110
~B = 11110000
A AND ~A = 0
B AND ~B = 0
Dobrze, tylko że ja muszę znać co oznacza zerowanie bitowe i jak to zrobić na dowolnych dwóch liczbach.
Nie ma takiego pojęcia ani w matematyce ani w informatyce jak zerowanie bitowe. Jeżeli to problem na uczelni to wykładowca tak to sobie sam nazwał. Stąd trzeba rozumieć to sformuowanie dosłownie - czyli operacja bitowa w efekcie której otrzymuje się zero. Powyższe sposoby to jedyne sposoby na osiągnięcie tego celu przy pomocy prostych operacji bitowych.
Każdy z tych operatorów logicznych na swoje odpowiedniki w każdym języku programowania.
Czyli w takim razie zerowanie można osiągnąć przez:
A AND ~A
i taki zapis powinien być dobrze.