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

Zmiana 4 niższych bitów bajtu w Bascom'51 bez ruszania wyższych bitów

Szopler 25 Lut 2006 00:02 909 5
REKLAMA
  • #1 2344609
    Szopler
    Poziom 21  
    Posty: 570
    Pomógł: 7
    Ocena: 12
    4 nizsze bity bajtu nie ruszajac wyzszych (i odwrotnie) ?!?
  • REKLAMA
  • #2 2344624
    xyacol
    Poziom 11  
    Posty: 36
    Pomógł: 1
    co znaczy zamienic? z czym zamienic? na przeciwne? na 0, a moze na 1?
  • REKLAMA
  • #3 2344680
    Szopler
    Poziom 21  
    Posty: 570
    Pomógł: 7
    Ocena: 12
    Chodzi o to, że muszę wziąć 4 wyższe bity i dodac do nich coś, np:
    mam 1101 0000 biore tylko 1101 i dodaje 0011 - mam 1101 0011
    w druga strone to by bylo tak:
    1101 0011 biore tylko 1101 i dodaje 0000, mam 1101 0000...

    Jak wziac z bajta wyłuskac 4 dolne / 4 gorne bity ??
  • REKLAMA
  • #4 2344727
    szymtro
    Poziom 30  
    Posty: 1421
    Pomógł: 101
    Ocena: 59
    piszesz tak

    zmienna_a=11010000
    zmienna_b=00001010

    zmienna_c=0
    zmienna_c=zmienna_a and &b11110000
    zmienna_b=zmienna_b and &b00001111 'odfiltrowanie niepotrzebnych bitow
    zmienna_d=zmienna_c + zmienna_b
  • REKLAMA
  • #5 2344753
    Szopler
    Poziom 21  
    Posty: 570
    Pomógł: 7
    Ocena: 12
    To jest zamiana dolnych bez ruszania górnych, a odwrotnie to będzie tak:
    N1 = &B11000011
    N2 = &B00110000
    N3 = N1 And &B00001111
    N2 = N2 And &B11110000
    N4 = N3 Or N2
    Dobrze kombinuję ?
  • #6 2348669
    Szopler
    Poziom 21  
    Posty: 570
    Pomógł: 7
    Ocena: 12
    A jak przesuwac bity?
    Tzn. z &B0000 0011 zrobic &B0000 1100
    żeby móc zrobić to:
    N1 = &B0000 0011
    N2 = &B0000 0011
    N3 = N1 (+) N2 = &B0000 1111

    I inny przypadek:
    N1 = &B0000 0010
    N2 = &B0000 0011
    N3 = &B0000 1011

    I jeszcze jak zrobić:
    Mam osiem zmiennych bitowych od ktorych costam zalezy...
    Mam parametr - 8 bitów...
    Chcę, żeby te 8 bitów zamieniało się na wartości 8 zmiennych...
    Robię to tak:
    If Param1234 = &B00000000 Then Rds1 = 0 : Rds2 = 0 : Rds3 = 0 : Rds4 = 0 : Fhs1 = 0 : Fhs2 = 0 : Fhs3 = 0 : Fhs4 = 0

    Ale mam 2^8 = 256 przypadków, więc muszę napisać 256 linijek z If...
    Jakbym mógł jakoś przypisać zmiennej bitowej określony bit z bajta to byłoby pięknie :)

    Słowem - muszę zrobić coś takiego (przykład):
    Parametr = &B1010 1010
    Zmienna1= 1 Zmienna2= 0 Zmienna3= 1 Zmienna4=0
    Zmienna5= 1 Zmienna6= 0 Zmienna7= 1 Zmienna8=0

    JAK ?!?
    [za to drugie dam sporo punktów]
    Z góry dziękuję !!!

    Dodano po 2 [godziny] 13 [minuty]:

    Dam sporo punktów SOBIE 8-)...

    Filtr_1: 'Filtrowanie parametrow
    Paramp = Param And &B10000000
    If Paramp = &B10000000 Then Rds1 = 1 Else Rds1 = 0

    Paramp = Param And &B01000000
    If Paramp = &B01000000 Then Fhs1 = 1 Else Fhs1 = 0

    Paramp = Param And &B00100000
    If Paramp = &B00100000 Then Rds2 = 1 Else Rds2 = 0

    Paramp = Param And &B00010000
    If Paramp = &B00010000 Then Fhs2 = 1 Else Fhs2 = 0

    Paramp = Param And &B00001000
    If Paramp = &B00001000 Then Rds3 = 1 Else Rds3 = 0

    Paramp = Param And &B00000100
    If Paramp = &B00000100 Then Fhs3 = 1 Else Fhs3 = 0

    Paramp = Param And &B00000010
    If Paramp = &B00000010 Then Rds4 = 1 Else Rds4 = 0

    Paramp = Param And &B00000001
    If Paramp = &B00000001 Then Fhs4 = 1 Else Fhs4 = 0
    Return
REKLAMA