Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » bit verknüpfung ?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.11.2004, 10:58 Uhr
~knopper
Gast


Ich habe:

byte[] data;

ICh verstehe nicht diese Operation:

(data[position] & 0x0f) * 4

Kann mir jemand vielleicht erkären ?! Oder links wäre mir dankbar !
gruss
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.11.2004, 11:07 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


damit schneidest du die letzten 4 bits aus der zahl aus... un verschiebst diese dann um zwei stellen...

du bildest also alle zahlen auf [0...15]*4 ab...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.11.2004, 11:19 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ach so mir ist gerade eingefallen... anschaulicher erklärt wäre das folgende funktion...

f(x) = (x%16)*4
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.11.2004, 11:22 Uhr
~knopper
Gast


Hallo Windalf,

Wieso verschieben ?
Ich habe z.B.l data[position]=0x14 ( IP Headerlength =20)

nun:

0x14 & 0x0f = 0x04 ( also = 4 )

dann 4*4 =16 (decimal ?!)

Stimmt das ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.11.2004, 12:09 Uhr
~knopper
Gast


www.cpp-tutor.de/cpp/le03/le03_02.htm
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.11.2004, 14:11 Uhr
Hans
Library Walker
(Operator)



Zitat:
Wieso verschieben ?


Hi,
eine Multiplikation mit zwei ist identisch mit dem verschieben um eine Stelle nach links. Dem entsprechend ist eine Multiplikation mit vier identisch mit dem verschieben um zwei Stellen nach links. Zum veranschaulichen mach mal folgendes:

C++:
#include <stdio.h>

int main()
{
  int a, b, i;

  a=b=1;
  for (i=0; i<16; i++)
    { printf ("a=%5d, \t b=%5d\n", a, b);
      a *= 2;
      b<<=1;
    }
  return 0;
}



Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.11.2004, 16:52 Uhr
~knopper
Gast


Hallo,

Danke Euch ! ICh glaube ich habe ein bisschen vertanden. Nun habe folgende Code Segment und habe das erklärt.
Kann jemand von Euch mal prüpfen ob ich alles vertanden habe ?

byte m_version = 0x04; // = 00000100
// the header length has at least 0x14 bytes
ushort m_headerLength = 0x14; // = 00010100
int position = 0;

// pack the header length and version fields into the first byte.
// (note that the header length is the number of 32 bit words, so we divide it by 4.
// This is why the header size must be a multiple of 4)

buffer[position] = (byte) (m_headerLength / 4);

// m_headerLength 2 mal nach rechts schieben m_headerLength = 00000101 -> hex =0x05

buffer[position] |= (byte) (m_version << 4);

// m_version 4 mal nach links schieben => 01000000
// ODER Verknüpfung mit m_headerLength ( 00000101) ergibt 01000101 => 0x45 ~ 1 byte


position++;


gruss
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
12.11.2004, 00:43 Uhr
Hans
Library Walker
(Operator)


Hi,

ist der Code vorgegeben, und Du hast ihn Dir kommentiert, oder sind die Kommentare vorgegeben, und Du sollst/willst den Code dazu schreiben?
Bis jetzt erscheinen mir die Kommentare und die Codeschnippsel jedenfalls widersprüchlich.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 12.11.2004 um 00:45 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: