Ergebnis 1 bis 8 von 8
  1. #1
    Fortgeschrittener
    Registriert seit
    24.05.2010
    Beiträge
    35

    Standard Frage zu Bitverschiebung

    Hallo zusammen da ich ja C / C + + lernen will habe ich mir ein Buch besorgt in dem (fast)alles zimlich gut erklärt wird doch bin ich auf eine Formel gestoßen die ich nicht verstehe.

    Ich sollte als Aufgabe den ganze ASCII-Zeichensatz als eine Tabelle (siehe hier) darstellen.

    Hier die Lösung dazu:



    So zum ausrechnen der einzelnen Zeichen ergibt sich die
    Formel: "zeichen= 16*spalte + zeile" so bist dahin ist alles klar nun stellt mein Buch die Formel so da: "zeichen = (spalte << 4) | zeile"
    und genau das verstehe ich nicht, wie ich von der einfachen Formel auf diese komme. Durch die Pfeile wird ja um 4 Bit die spalte nach links verschoben aber was bringt mir das ^^ ? Wäre echt cool wenn das hier einer versteht und mir erklären kann.

    MfG °light°
    Geändert von °Light° (01.06.2010 um 20:56 Uhr)

  2. #2
    Der `Toastflüsterer` Avatar von AlterHacker
    Registriert seit
    27.09.2008
    Beiträge
    690

    Standard

    Hey,

    Ich hab mir zwar jetzt nicht alles angeguckt aber ein Shift Left um 1 bringt eine multiplikation um 2. (Geht schneller als *2)
    Also
    wert << 1 // = *2
    wert << 2 // = *4
    wert << 3 // = *8
    wert << 4 // = *16

    Warum kannst du dir denken? Wenn nicht schau dir mal das Binär-System an

    Ach ja und das | ist quasi die Addition

    Da das eine um 4 bits verschoben wurde, sieht es (für zeile =15, also im extremfall) so aus:
    XXXX0000 | 00001111 => XXXX1111
    D.h. in diesem Fall kann man das | als Additionsoperator benutzten.

    Wenn das nicht im Buch steht, find ich das Buch nicht so gut für absolute anfänger geeignet.


    MfG
    Geändert von AlterHacker (01.06.2010 um 21:02 Uhr) Grund: OR

    Security is an illusion.
    Cheater : 8=o
    Normaluser : 8=======o
    Ich : 8================o

    BM: (4|2|0)

  3. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    °Light° (01.06.2010)

  4. #3
    Stanley Jobson Avatar von GregorSamsa
    Registriert seit
    23.08.2008
    Beiträge
    729

    Standard

    Recht Simpel: 00000001
    Geändert von GregorSamsa (01.06.2010 um 21:01 Uhr)

  5. #4
    NoClose Wurm Avatar von Zer0Flag
    Registriert seit
    27.06.2009
    Beiträge
    198

    Standard

    Zitat Zitat von GregorSamsa Beitrag anzeigen
    Recht Simpel: 00000001
    Ich vervollständige das mal :

    |21:02:29| |+GregorSamsa| da soll stehen:
    |21:02:42| |+GregorSamsa| 00000001 << 4 = 00010000
    |21:02:46| |+GregorSamsa| 00000001 = 1
    |21:02:50| |+GregorSamsa| 00010000 = 16


    ~Zer0Flag

  6. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    °Light° (01.06.2010)

  7. #5
    Fortgeschrittener
    Registriert seit
    24.05.2010
    Beiträge
    35

    Standard

    Zitat Zitat von AlterHacker Beitrag anzeigen
    Hey,

    Ich hab mir zwar jetzt nicht alles angeguckt aber ein Shift Left um 1 bringt eine multiplikation um 2. (Geht schneller als *2)
    Also
    wert << 1 // = *2
    wert << 2 // = *4
    wert << 3 // = *8
    wert << 4 // = *16

    Warum kannst du dir denken? Wenn nicht schau dir mal das Binär-System an

    Ach ja und das | ist quasi die Addition

    Da das eine um 4 bits verschoben wurde, sieht es (für zeile =15, also im extremfall) so aus:
    XXXX0000 | 00001111 => XXXX1111
    D.h. in diesem Fall kann man das | als Additionsoperator benutzten.

    Wenn das nicht im Buch steht, find ich das Buch nicht so gut für absolute anfänger geeignet.


    MfG

    und woher weis ich als anfänger wann das | als aditionsoperatro und wann es als "bitweises oder" verwendent wird ?

    PS: So ne frage warum kann ich schon den ganzen tag mit firefox keine thread oder antworten schreiben ? geht iwie nur mit IExploer ^^

  8. #6
    Der `Toastflüsterer` Avatar von AlterHacker
    Registriert seit
    27.09.2008
    Beiträge
    690

    Standard

    Es wird als Bit-OR benutzt, nur in diesem Fall hats den Effekt eines '+' quasi.
    Warum?
    0 | 0 = 0
    0 | 1 = 1
    1 | 1 = 1
    Also bsp:
    11110000 OR
    00001010 =
    11111010

    Wenn die Bits schon gesetzt wären, wird nichts addiert weil 1 or 1 = 1, also wird da nichts mehr.
    Da aber die 4 kleinen Bits aufgrund des 4fach-Shifts immer 0 sind, und die Bits für die spalte nur in den ersten 4 bits sind (weil 15 = alle 4 bits 1 ) wäre es im schlimmsten fall:

    11110000 ( Für Zeile ) OR
    00001111 ( Für Spalte) =
    11111111
    => Die beiden "Bitmuster" überschneiden sich nicht => 100% Addierung


    So far


    P.s.:
    Schreib sowas nicht in deinem Code! Und wenn dus machst (Weil zeitkritische Funktion oder so) kommentiere es ausreichend! Sonst verstehst du's / wer anders der sich den Code anguckt später nicht mehr.

    Security is an illusion.
    Cheater : 8=o
    Normaluser : 8=======o
    Ich : 8================o

    BM: (4|2|0)

  9. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    °Light° (01.06.2010), G.U.N (01.06.2010)

  10. #7
    Fortgeschrittener
    Registriert seit
    24.05.2010
    Beiträge
    35

    Standard

    ah jetz okay habs soweit verstanden schade das das so nicht im buch stand naja werde mir vl ein anders bald besorgen.
    Danke an alle für die Hilfe

  11. #8
    Der `Toastflüsterer` Avatar von AlterHacker
    Registriert seit
    27.09.2008
    Beiträge
    690

    Standard

    Gut, dass es bei F-H keinen THX-Knopf gibt weil man sonst in versuchung käme, diesen zu drücken ^^.

    Security is an illusion.
    Cheater : 8=o
    Normaluser : 8=======o
    Ich : 8================o

    BM: (4|2|0)

  12. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Anzulo (12.07.2010), The Blubb (02.06.2010)

Ähnliche Themen

  1. [FRAGE]Hoch-Sicherheits-Passwort??[FRAGE]
    Von Mﮇx ǿηe im Forum Sicherheit
    Antworten: 24
    Letzter Beitrag: 12.11.2008, 23:06

Stichworte

Berechtigungen

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