Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Asm] Zmiana wartości unsigned na signed


Rekomendowane odpowiedzi

Opublikowano

Tak, jednakże jestem pewny że jest to "gdzieś" zapisane ;)

 

Ktoś już na to wpadł:

 

 

 

Your superman is here, bitch!

Opublikowano

Właśnie nie. W każdym game producent(ymir) ogranicza wartości signed, a tutaj wyraźnie są one "odblokowane".

 

ps. W te bajki o "nowym game" wierzysz ?

Your superman is here, bitch!

Opublikowano

hmm, taką wartość ma Integer w mysql,

[b]BIGINT[/b] Opis: Duże wartości całkowite Dostępne atrybuty: UNSIGNED, ZEROFILL Zakres: od -9223372036854775808 do 9223372036854775807 (dla UNSIGNED od 0 do 18446744073709551615) Zajmowane miejsce: 4 bajty (64 bity) 

btw.

jak zmienisz w game, zmień w mysql z int, i daj na Nieujemną =p

Opublikowano

773593FFh to 1999999999 na dec.

Wiem. Chodziło mi o signed(maksymalną podpiętą wartość) zawartą pod tymi bajtami. :)

 

@topic: eh, pomyliłem bajty.. lol.

Your superman is here, bitch!

Opublikowano

Właśnie nie. W każdym game producent(ymir) ogranicza wartości signed, a tutaj wyraźnie są one "odblokowane".

 

ps. W te bajki o "nowym game" wierzysz ?

no kurwa ymir sie w diffy bawi i daje diffy na pety i na kostiumy? ogarnij..

Opublikowano

no kurwa ymir sie w diffy bawi i daje diffy na pety i na kostiumy? ogarnij..

Ciekawe że prywatna osoba to cały Ymir. ;)

Your superman is here, bitch!

Opublikowano

Hej. Chciałbym zmienić typ liczby z unsigned na signed, lecz praktycznie mówiąc nie wiem jak to zrobić.

 

Dopuszczalna liczba to -2 147 483 648 / +2 147 483 647 jednakże po przekroczeniu tej liczby, wartość zmienia się na ujemną. Czy da radę to jakoś ominąć, zmienić ?

 

Zmienic sie nie da. Znak liczby jest zapisany na jej pierwszym bicie. To jak komputer traktuje dane zalezy od programisty, dla niego to jedynie ciag bitow. Mozna jednakze wykryc overflow przez sprawdzenie odpowiedniej flagi z rejestru flagowego. AF,OF,CF. Znajdz sam ktora jesli jestes ciekaw ;p

Weteran
Opublikowano

Nie wiem niestety o co chodzi dla autora tematu.

Jeżeli chodzi o metina, to chciałbym powiedzieć, że ten dział nie jest na tego typu pierdoły.

 

Jeśli chodzi o assemblera to:

Słabo znam się na assemblerze, ale z tego co pamiętam w assmie nie ma typów, a czy liczba jest signed czy unsigned decyduję sign flag(najstarszy bit).

Liczbę przeciwną do A można obliczyć tak

 

mov eax, [A]
not eax
add eax, 1

not odwraca wszystkie bity, czyli najstarszy bit również

lub trochę "głupiej"

 

mov eax, [A]
mov edx, eax
sub eax, eax
sub eax, edx

Tak jak napisałem wcześniej: nie programuję w assemblerze, więc mogę się mylić.

Opublikowano

Dokładnie, w asm nie ma określonego typu danych jednakże procesor zwraca uwagę na najstarszy bit. Aby z signed zrobić unsigned należy zmienić wszystkie instrukcje traktujące tą liczbę jako signed na unsigned (przykład: ja będzie dla liczby ze znakiem, jg dla liczby bez znaku). Ewentualnie zakodzić funkcję z tą wartością od nowa traktując ją jako unsigned (np. w dllce albo w nowej sekcji).

 

BIGINT Opis: Duże wartości całkowite Dostępne atrybuty: UNSIGNED, ZEROFILL Zakres: od -9223372036854775808 do 9223372036854775807 (dla UNSIGNED od 0 do 18446744073709551615) Zajmowane miejsce: 4 bajty (64 bity)

auć (4*8 = 32...)

YOU MUST DIE

- Ganon, Koridai

  • 4 miesiące temu...
Opublikowano

a jak ją zakodzić ?

nie szlo by po prostu zmienić jakoś wartości np 4bajtów z signed na unsigned?

bo 4 pola są tak kodowane(nie wiem czy dobrze mówię)

4funmt2.pl

Opublikowano

wszystkie operacje arytmetyczne na liczbach ze znakiem są takie same jak na liczbach bez znaku. są one jedynie inaczej interpretowane przez np. strumienie i kompilator

tak mi się wydaje, niech mnie ktoś poprawi jak źle mówię

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...