Zum Inhalt springen

Bit Verknüpfung


Empfohlene Beiträge

Gast KnapsackSolver
Geschrieben

Hallo Community,

ich besitze ein Byte, von diesem Byte benötige ich jedoch nur die ersten 4 Bit und später dann die letzten 4 Bit.

Also zur Darstellung

Byte:

1011 ------ 1101

(4Bit) Trennung (4Bit)

Jetzt muss ich im Prinzip eine Negierung der getrennten Bit erhalten:

Also erste 4 Bit (1011) Negierung dazu wäre (0100).

Dieses Ergebnis muss ich nun aneinander Packen, damit meine ich immer die erste Zahl von den 4 Bit und dann die jeweilige negierte Zahl dahinter:

Als Ergebnis bekomme ich dann:

.....1.....0.....0.....1.....1.....0......1......0

-> Ich hoffe ihr könnt mir folgen :D

Wie kann ich sowas in Quellcode umbauen?

Geschrieben

Moin!

Informiere Dich mal zu Shift und AND. Um die ersten 4Bits zu "nullen" kannst Du sie mit 00001111 "verunden", an die ersten 4 Bits kommst Du durch shiften um 4 Bits.

Gast KnapsackSolver
Geschrieben

Ja also das ist schon logisch

Also ich muss im Prinzip auf die ersten 4 Bit eine AND Verknüpfung mit 0000 machen... Dann bekomme ich schon mal die Gegenwerte dazu... Jedoch muss ich ja jetzt immer abwechselnd die Bits immer abwechselnd nacheinander haben

Gast KnapsackSolver
Geschrieben

Also ich habe ja eben 4 Bit, von diesen 4 Bit muss dann das Gegenteil (Negierung) ermittelt werden.

4 Bit -> z.B. 0110 (Bezeichnung= BitVal)

Negierung 4 Bit -> 1001 (Bezeichnung= BitNegierung)

Jetzt muss abwechselnd immer folgend vorgegangen werden:

1 Bit von BitVal, dann 1 Bit von BitNegierung, dann 2 Bit von BitVal, dann 2 Bit von BitNegierung usw ....

Anschließend habe ich ja ein zusammengesetztes Byte.

Wie mache ich das ?

Geschrieben

Auch hier solltest Du mit Shift und AND und OR zum Ergebnis kommen. Mit AND das benötigte Bit freistellen, an die richtige Stelle Shiften und dann mit OR in das Ergebnis übertragen.

  • 2 Wochen später...
Gast KnapsackSolver
Geschrieben

Hi Pointerman, kannst du das mal an einem Beispiel aufzeigen?

Geschrieben

	char orig =   6; //0110

	char neg =   9; //1001 

	char result = 0;

	for(int bit = 3; bit >= 0; bit--)

	{

		result = result << 1;

		result |= ((orig >> bit) & 1) << (bit + 1) ;

		result |= ((neg >> bit) & 1) << bit;		

	}

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...