Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.

  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] Operacje bitowe, a literyZależność między tymi dwoma

operacje bitowe litery zależność

  • Zamknięty Temat jest zamknięty
7 odpowiedzi w tym temacie

#1 waluss

    Nowy

  • Użytkownik

Reputacja: 0
zer0.

  • Postów:7
Offline

Napisano 02.12.2012 12:15

Witam, chciałbym zapytać o zależność między np.:
(1<<0) = 'a';
(1<<1) = 'b';
...
(1<<25) = 'z';

I właśnie przy tym Z jest problem. Czy jest możliwość przejścia na duże litery, znaki itp. ? I czy taka konwersja ma jakiś związek z kodem ASCII, bo nie widzę związku między (1<<0) = 1 (1<<2) = 4, a ASCII.

Pozdrawiam.

Użytkownik waluss edytował ten post 02.12.2012 12:18

  • +
  • -
  • 0

#2 R3X

    Godlike

  • Przyjaciel

Reputacja: 2960
Godlike

  • Postów:4247
  • Lokalizacja:Nie
Offline

Napisano 02.12.2012 13:20

kod ASCII jest tak zbudowany, że każda z małych liter jest dokładnie odległa od swojej wielkiej wersji o dokładnie 32,

new A = 'A';
new a = A - 32;

dla komputre jest to różnica na piątym bicie (32 = 2^5), a operacje bitowe są szybsze więc robi się to tak:
new A = 'A';
new a = A | (1<<5);


z małej na dużą idzie się przez zerowanie piątegu bitu

new a = 'a';
new A = a & (~(1<<5));


Porównaj sobie 2 ostatnie kolumny z tej listy: http://pl.wikipedia.org/wiki/ASCII
  • +
  • -
  • 0

#3 waluss

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
zer0.

  • Postów:7
Offline

Napisano 03.12.2012 09:27

Dzięki, wszystko zrozumiałem, ale nadal nie potrafię tego zrobić, aby w pliku tekstowym po wpisaniu dużego A, plugin traktowałby to jako inny znak. Możesz mi podać jakiś przykład ?
Chyba, że z dużymi znakami to nie zadziała to z innymi, albo kombinacją np. ab, a1.
  • +
  • -
  • 0

#4 R3X

    Godlike

  • Przyjaciel

Reputacja: 2960
Godlike

  • Postów:4247
  • Lokalizacja:Nie
Offline

Napisano 03.12.2012 21:29

aa o to chodzi :D

to nie bez przyczyny każdy znak ma swój numer, znaki są przechowywane w pamięci jak liczby; żeby z 'a' zrobić 'b' wystarczy dodać 1

new a = 'a';
new b = a+1;

//albo
new b = 'a' + 1;

Jest jeszcze kwestia używania tych znaków w tekstach. Proponuję Ci zapoznać się z format
  • +
  • -
  • 0

#5 waluss

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
zer0.

  • Postów:7
Offline

Napisano 03.12.2012 21:48

No i nadal nie możemy się zrozumieć :D Twoja pierwsza wersja była bliższa temu co chcę osiągnąć.
Kojarzysz bitowy zapis flag dla administratorów ?
#define ADMIN_IMMUNITY (1<<0)  czytane jest jako małe 'a' w pliku tekstowym
#define ADMIN_xxx (1<<1) czytane jako małe 'b'

I chciałbym rozszerzyć moje możliwości o inny zestaw znaków np. 'A' ( o ile będzie rozróżniane jako inny znak ) lub a1, b1 etc.

PS. W sumie to poradziłem sobie z moim problemem w trochę inny sposób, chociaż posiada jeszcze jeden mały błąd, ale chciałbym znać odpowiedź na moje pytanie :)
  • +
  • -
  • 0

#6 GwynBleidD

    Godlike

  • Administrator

Reputacja: 1849
Godlike

  • Postów:3066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 03.12.2012 23:30

Aby zamienić taki ciąg na sumę bitową wystarczy dla każdego znaku wywołać:

suma |= (1<<(znak-'A'))


W wewnętrznym nawiasie możesz sobie dodać jakiśtam offset, np:

suma |= (1<<(znak-'A'+26))

Przy konwertowaniu dużych liczb, żeby a-z były niższymi wartościami, a A-Z wyższymi... Jednak jest jeden problem.. zmienne w AMX są 32 bitowe, więc więcej niż 32 znaków nie obsłużysz, maksymalnie do F Ci się uda w podanym przykładzie...
  • +
  • -
  • 0
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark

#7 waluss

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
zer0.

  • Postów:7
Offline

Napisano 04.12.2012 07:14

Czyli będę musiał dopracować moja metodę, ale dziękuję za pomoc i kilka słów objaśnienia jak to działa :)
  • +
  • -
  • 0

#8 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 09.12.2012 02:36

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL





Również z jednym lub większą ilością słów kluczowych: operacje, bitowe, litery, zależność

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych