![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) ![]() ![]() |
Mam np. Takie zapytanie:
Oczywiscie bym mogl zrobic po przecinku zamiast w 1 to kilka razy ta sama kolumne, Jednak chce w 1 bo 1 aktualizuje. Powyzsze zapytanie sie wykonuje ale aktualizuje kolumne na wartosc 0 co jest źle. Jak moge najlepiej wykonac powyzsze zapytanie zeby aktualizowac 1 kolumne 1 raz? Ten post edytował KsaR 25.02.2016, 20:40:37 -------------------- |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Ostatecznie nakładasz maskę na bit 0, więc wystarczy options & 1.
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) ![]() ![]() |
Ostatecznie nakładasz maskę na bit 0, więc wystarczy options & 1. Jednak wtedy zaktualizuje także inne bity ktore moga miec wartosc 1 a tego bym nie chcial;;; Konkret: bit1 = 1; // ma byc 1 bit2 = 2; // ma byc 0 bit3 = 4; // ma byc na 0 bit4 = 8; // musi zostac jak bylo bit5 = 16; // musi zostac jak bylo Ten post edytował KsaR 25.02.2016, 20:59:24 -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
To co właściwie chcesz zrobić? Odwrócić tylko ten jeden bit?
-------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) ![]() ![]() |
To co właściwie chcesz zrobić? Odwrócić tylko ten jeden bit? Tak jak wyzej: bit1 = 1; // ma byc 1 bit2 = 2; // ma byc 0 bit3 = 4; // ma byc na 0 bit4 = 8; // musi zostac jak bylo bit5 = 16; // musi zostac jak bylo -------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
options & ~7 | 1
Ten post edytował trueblue 25.02.2016, 21:03:38 -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) ![]() ![]() |
options & ~7 | 1 Dzieki, a moglbys jeszcze wytlumaczyc jak to konkretniej dziala? Bo nie rozumiem tego ~7 a chyba glowna role tu pelni. -- A jeszcze bede musial kilka zapytan przerobic gdzie podobna sytuacja tylko inne wartosci bedzie trzeba... Ten post edytował KsaR 25.02.2016, 21:08:37 -------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Skoro nie interesują Cię bity 1/2/3, a dokładnie 0/1/2, to najpierw jest założona maska na wszystkie bity wyżej, a potem ustawiony bit 0.
Można również nałożyć maskę na wszystkie bity wyżej i zerowy i analogicznie ustawić zerowy. Na ośmiu zapalonych bitach wygląda to tak: 11111111 11111000 (AND 248, bo 248 to zanegowane 7 (00000111)), 11111001 (OR 1) lub bez zerowania bitu 0: 11111111 11111001 (AND 249, bo 249 to zanegowane 6 (00000110)) 11111001 (OR 1) Ten post edytował trueblue 25.02.2016, 21:13:22 -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 520 Pomógł: 102 Dołączył: 15.07.2014 Skąd: NULL Ostrzeżenie: (0%) ![]() ![]() |
Skoro nie interesują Cię bity 1/2/3, a dokładnie 0/1/2, to najpierw jest założona maska na wszystkie bity wyżej, a potem ustawiony bit 0. Można również nałożyć maskę na wszystkie bity wyżej i zerowy i analogicznie ustawić zerowy. Na ośmiu zapalonych bitach wygląda to tak: 11111111 11111000 (AND 248, bo 248 to zanegowane 7 (00000111)), 11111001 (OR 1) lub bez zerowania bitu 0: 11111111 11111001 (AND 249, bo 249 to zanegowane 6 (00000110)) 11111001 (OR 1) Ale to zmienia wszystkie bity chyba? (Dopiero sie ucze operacji na bitach) A tam wyzej pisalem "bit4 = 8; // musi zostac jak bylo bit5 = 16; // musi zostac jak bylo" Bo sa to bity na ktorych mam konkretne opcje zapisane i moze byc albo 0 albo 1 Ten post edytował KsaR 25.02.2016, 21:21:18 -------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
1 AND 1 = 1
0 AND 1 = 0 1 AND 0 = 0 0 AND 0 = 0 1 OR 1 = 1 0 OR 1 = 1 1 OR 0 = 1 0 OR 0 = 0 Potrenuje na kartce, rozpisz wartość options w postaci binarnej i operuj na każdym bicie z osobna, ale cała operacja w jednej linii, kolejna operacja w kolejnej linii. Jak dodawanie pod kreską. -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.06.2025 - 16:07 |