-         

Ergebnis 1 bis 10 von 10

Thema: wo finde ich etwas über ' << '

  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von Jacob2
    Registriert seit
    26.05.2007
    Ort
    Berlin
    Beiträge
    345

    wo finde ich etwas über ' << '

    Anzeige

    Hi,
    hab (schon wieder) eine Frage: Wo finde ich im Internet etwas über den Operator ' << ' ?
    "C << operator" bei Google hilft nicht weiter!
    Roboter, CNC Fräse, Elektronik und Basteleien stelle ich auf meiner Website vor...

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    "C << operator" bei Google hilft nicht weiter!
    Nicht? Wenn du gleich den ersten Treffer (wikibooks) anklickst, welche Fragen bleiben dann bezüglich "<<" noch offen?
    MfG
    Stefan

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Hei Jacob2,

    Schau mal hier:
    http://www.roboternetz.de/wissen/ind...der_Operatoren

    oder hier
    http://www.mikrocontroller.net/artic...gisterinhalten

    wobei die Bitmanipulation explizit noch hier
    http://www.mikrocontroller.net/articles/Bitmanipulation

    hübsch beschrieben wird. Es ist eigentlich eine häufige Operation, aber man kann die - wenn man es kann - ziemlich tricky anwenden.
    Ciao sagt der JoeamBerg

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.11.2004
    Ort
    Aachen
    Alter
    32
    Beiträge
    246
    << und >> sind shift-Operatoren.
    Damit verschiebt man die Daten um eine bestimmte Anzahl Bits nach links oder rechts.

    Beispiele:
    unsigned char bla = 0xcb; //11001011

    (bla << 1) ergibt: 0x0196 //00000001 10010110 (unsigned short!!!, ggf type-casten, um wieder unsigned char zu bekommen)
    (bla << 3) ergibt: 0x0658 //00000110 01011000 (unsigned short!!!, ggf type-casten, um wieder unsigned char zu bekommen)
    (bla >> 1) ergibt: 0x65 //01100101
    (bla >> 4) ergibt: 0x0c //00001100

    EDIT: Dies wird häufig benutzt, um bestimmte Bits in einem Register zu setzen/löschen:

    einRegister |= (1 << EIN_BIT) | (1 << ANDERES_BIT);

    setzt die Bits, die durch EIN_BIT und ANDERES_BIT gekennzeichnet sind (die entsprechende Bit-Nummer)

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    34
    Beiträge
    1.780
    Außerdem wäre noch zu erwähnen, daß man << und >> hervorragend zur Multiplikation mit, bzw. Division durch Potenzen von 2 nutzen kann...

    a << 2 liefert z.B. das gleiche Ergebnis wie a*4
    a >> 1 ist dementsprechend gleichbedeutend mit a/2

    Das sollte man wissen, da man auf diese Art z.B. schnelle Divisionen realisieren kann, auch wenn der verwendete µC eigentlich nicht dividieren kann (z.B. AVR).

    Will man << für Multiplikationen nutzen, sollte man beachten ob der verwendete µC einen Barrel-Shifter hat. Bei den AVR Controllern ist das z.B. nicht der Fall und eine Multiplikation benötigt zudem nur 2 Zyklen, so daß ein Shift nur bei der Multiplikation mit 2 schneller ist.
    So viele Treppen und so wenig Zeit!

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Kleiner Zusatz:

    und eine Multiplikation benötigt zudem nur 2 Zyklen, so daß ein Shift nur bei der Multiplikation mit 2 schneller ist.
    Nicht alle AVRs haben einen Hardware-Multiplizierer.
    MfG
    Stefan

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Zitat Zitat von sternst
    Nicht alle AVRs haben einen Hardware-Multiplizierer.
    Nach (m)einer Liste mit 84 AVR´s haben die mega´s alle einen und die tiny´s keinen Hardware-Multiplizierer. In dieser Liste sind das 52 Controller von ATmega8 bis ATmega2561. Im Zweifelsfall wird man natürlich bei ATMEL direkt nachlesen.
    Ciao sagt der JoeamBerg

  8. #8
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Ich bin mir nicht ganz sicher, was du mir damit jetzt sagen willst.
    Sind die Tinys in deinen Augen keine AVRs?
    MfG
    Stefan

  9. #9
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Ich habe ganz Allgemein, vorzugsweise aber an den Ersteller des Threads Deine Aussage etwas ausführlicher dargestellt und als Hilfe für den Threadersteller noch einen hier sinnvollen Link gegeben. Deinen zweiten Satz brauchen wir hoffentlich nicht zu diskutieren.
    Ciao sagt der JoeamBerg

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Beiträge
    1.607
    Tip: such nach Bit Operatoren in C bzw C++ - kommt aufs gleiche bei raus - gibt da noch mehr wie |, ||, &, &&, ^, <<, >>

Berechtigungen

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