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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren