Verschiedene Bits ausgeben

OP #6732675
Lesenswert?
• ▲
▼
Guten Tag liebe Community.

Folgendes Problem : Ich muss verschiedene Bits von "value = 2034" 
ausgeben.
Also das höchste, das niedrigste Bit und Bits 3 und 4. Ich habe 
folgender C-Code:
1
#include<stdio.h>
2
#include<stdlib.h>
3

4
int main(void) {
5
  
6
  int value = 2034; // 0111 1111 0010
7
  int c0 = 0;
8
  int c1 = 0;
9
  int c2 = 0;
10
  int c3 = 0;
11
  
12
  printf("\nValue: %d\n",value);
13

14
  
15
  c0 = (value &= (1<<11)); // hoechstes Bit
16
  c1 = (value &= (1<<0)); // niedrichstes Bit
17
  c2 = (value &= (1<<3)); // Bit 3
18
  c3 = (value &= (1<<4)); // Bit 4
19
  
20

21
  printf("\nc0 = %d\n",c0);
22
  printf("\nc1 = %d\n",c1);
23
  printf("\nc2 = %d\n",c2);
24
  printf("\nc3 = %d\n",c3);
25
}

Ich weiß dass es sich um Bitsverschiebung handelt. Als output erwarte 
ich :
1
c0 = 0
2
c1 = 0
3
c2 = 0
4
c3 = 16

Aber da "value" in Zeile 15 übershrieben wird bekomme ich:
1
c0 = 0
2
c1 = 0 
3
c2 = 0 
4
c3 = 0.
Könnte mir bitte hier weiterhelfen?
Gast #6732735
Lesenswert?
• ▲
▼
Oleksandr S. schrieb:
> Also so wie ich das verstehe, die Zahl 2034 im 2er System hat 12 Bits.
> 0111 1111 0010
> Das niegrigste Bit ist Bit 0 und das höchste ist Bit 11. Also von 0 bis
> 11 sind es insgesamt 12 Bits. Oder sehe ich das falsch?

Doch das ist schon richtig. Bis auf das die Zahl 2034 auch nur aus 11 
Bits bestehen könnte. (111 1111 0010) das geht aus deiner Aufgabe am 
Anfang nicht hervor.

Aber,

Oleksandr S. schrieb:
> Ich muss verschiedene Bits von "value = 2034" ausgeben.
> Also das höchste, das niedrigste Bit und Bits 3 und 4.

Verstehe ich so das, das du den Wert der Bits ausgeben sollst.
Das wäre bei 12Bit beim
* höchsten Bit = 0
* niedrigsten Bit = 0
* beim 3.Bit = 0
* beim 4.Bit = 1

Aber das ist auch nur das, was ich aus diesem einen Satz interpretiere. 
Ich kenn das ganze Drumherum nicht.
#6732750
Lesenswert?
• ▲
▼
Beo Bachta schrieb:
> Da geht's schon wieder los mit der Zählweise die inter-
> pretationsfähig ist.

Das ist hier nebensächlich, es geht um die Aussage

Oleksandr S. schrieb:
> c3 = 16

ein Bit kann halt nur die Werte 0 oder 1 annehmen. Insofern ist die 
Aussage c3 = 16 problematisch und hängt von der genauen Aufgabenstellung 
ab.

Dafür müsste er (hier in Prosa) erst value um vier schieben und dann mit 
1 als Maske "ver-unden". Dann bekäme er 0 für jedes nicht gesetzte, 1 
für jedes gesetzte Bit.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.