C/C++ Programmierung

Aufgabe 3

Zahlen können im Rechner nur binär gespeichert werden.

Schreiben Sie ein Programm, welches die rechnerinterne, binäre Darstellung einer Integer-Zahl (Typ: int) auf dem Bildschirm ausgibt.

Hinweis: Ermitteln Sie zuerst das Vorzeichen und dann sukzessive alle anderen Bits.

Die bitweise UND-Verknüpfung (UND-Verknüpfungen: 1&1 = 1, 1&0 = 0&1 = 0&0 = 0) i & 32 liefert einen Wert ungleich Null, falls das fünfte Bit in i gesetzt ist.

z.B. i = 44

   0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 | 25 + 23 + 22 = 44
 & 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 |           24 = 16
-----------------------------------+-------------------
 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |              =  0

   0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 | 25 + 23 + 22 = 44
 & 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 |           25 = 32
-----------------------------------+-------------------
 = 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 |              = 32

Lösung für die Aufgabe

/* Header-Datei einbinden */
#include <stdio.h>

int main(void) /* hier beginnt das Hauptprogramm */
{
  int zahl; /* Variable vom Typ int für die Zahl    */
  int i;    /* Variable vom Typ int für den Zähler */
  int pot;  /* Variable vom Typ int für die Potenz  */

  printf("Bitte eine Zahl eingeben: ");
  scanf("%d",&zahl); /* Eingabe vom Benutzer */

  printf("%d in binärer Form = ",zahl); /* Integerwert normal ausgeben */

  if (zahl < 0) /* Zahl kleiner 0, dann ist das erste Bit 1 sonst 0 */
    printf("1");
  else
    printf("0");

  pot = 16384; /* 2 hoch 14 */

  for (i = 14; i >= 0; i--) /* von Bit 14 bis Bit 0 rückwärts durchgehen */
  {
    if (zahl & pot)   /* ist das Bit gesetzt, dann "1" ausgeben */
      printf("1");
    else             /* sonst "0" ausgeben */
      printf("0");

    pot /= 2; /* Potenz = Potenz / 2 -> wird für den nächsten Durchlauf benötigt */
  }

  printf("\n"); /* am Ende noch ein "\n" senden */

  return(0); /* Das Hauptprogramm gibt am Ende 0 zurück, da kein Fehler aufgetreten ist. */
}


Zurück zur Übersicht