logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[BASCOM]Single - zmiana znaku

szeri88 02 Kwi 2009 18:07 1361 3
  • #1 6366750
    szeri88
    Poziom 14  
    Witam,

    Mam pewien problem ze zmienną Single. Muszę się do niej "dobrać" aby zamienić pierwszy bit (znaku) z "1" na "0". Niestety polecenie Shift nie działa ze zmienną typu Single. Chodzi mi o to, żeby wartości ujemne były zamieniane na dodatnie. Prosze o pomoc.

    Pozdrawiam
  • Pomocny post
    #2 6366916
    piti___
    Poziom 23  
    Zmienna = -Zmienna ?
  • #3 6366950
    szeri88
    Poziom 14  
    Rzeczywiście działa ;), ale dalej nie rozumiem dlaczego ;)
  • Pomocny post
    #4 6367113
    ZbeeGin
    Poziom 39  
    Wszstko dlatego, iż zmienne typu Single są nieco odmiennie zapamiętywane w pamięci i mają wyjątki (np. NaN, QNaN, SNaN) które nie są liczbami, i każda operacja arytmetyczna z nimi powinna wywołać błąd operacji i jego zgłoszenie - a tego Bascom niestety nie obsługuje (jak i spora ilość innych kompilatorów).

    Operacja z jawną zamianą znaku jest bezpieczniejsza niż operowanie na bitach, które po prostu mogłeś wykonać poprzez kwalifikator bitowy:
    Dim Ulamek As Single
    
    Ulamek = -2
    Print Ulamek
    ' zmiana bitu znaku
    Toggle Ulamek.31
    Print Ulamek
REKLAMA