- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 4 von 4

Thema: 6 Bits aus Long rausschneiden

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.05.2007
    Beiträge
    329

    6 Bits aus Long rausschneiden

    Anzeige

    E-Bike
    Hallo Forum,

    aus einer Longvariable sollen die Bits 7 bis 12 in eine Bytevariable. Overlay wird wohl nicht gehen, da des ja nicht mit Byteraster liegt.
    Wie wird das gemacht?

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Würd' ein Word-Overlay an Stelle 0 auf den Long legen, dann ein Byte-Overlay auf das Word an Stelle 1, das Word einmal nach links schieben, dann steht's bereits richtig im Byte drin, zum Schluss noch die Bits 7..6 im Byte mit AND ausmaskieren. Der Long wird dabei zerstört, vorher ggf. kopieren. Bei nur 6 Bit könnte auch die eher grobe Lösung Byte.5 = Long. 12, Byte.4 = Long. 11, usw. noch im Rahmen sein.
    Edit:
    Siebenmal rechts schieben, maskieren und das Ergebnis einem Byte zuweisen geht natürlich auch, dürfte aber länger brauchen.
    Geändert von MagicWSmoke (29.12.2011 um 13:12 Uhr)

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.05.2007
    Beiträge
    329
    Danke für die Hilfe,

    das habe ich befürchtet aber nicht wahrhaben wollen. Dann werde ich vorerst die Bits mit ner For Next Scheife rauspicken....

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von guenter1604 Beitrag anzeigen
    das habe ich befürchtet aber nicht wahrhaben wollen.
    Hm, wieso das ? Das sind nur ein paar Zeilen, da sind keine Umwege nötig.
    Edit:
    Schnell und komplizierter:
    Code:
    Dim my_Long As Long
    Dim my_Word As Word At my_Long Overlay
    Dim my_Byte As Byte At my_Word + 1 Overlay
    
    my_Long = &b11111111111111100011101100111111
    Shift my_Word , Left , 1
    my_Byte = my_Byte And &b00111111
    Oder einfach, aber langsamer:
    Code:
    Dim my_Long As Long
    Dim my_Byte As Byte
    
    my_Long = &b11111111111111100011101100111111
    Shift my_Long , Right , 7
    my_Byte = my_Long And &b00111111
    Geändert von MagicWSmoke (29.12.2011 um 22:44 Uhr)

Ähnliche Themen

  1. Shift bei Long
    Von Che Guevara im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 03.07.2011, 16:49
  2. Berechnung mit long-Variable fehlerhaft
    Von Suggarman im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 30.03.2009, 20:13
  3. unsigned volatile long ??
    Von Ali_Baba im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 04.03.2009, 20:31
  4. avr gcc kennt kein long ????
    Von _maddin im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 18.02.2007, 12:25
  5. Byte zu Long konvertieren
    Von hacker im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 14.05.2006, 17:10

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen