5.2.20
07/03/20
Last Modified 06/30/19 by Walter Tasin
AlgoDat_LU8 Reload Page

Algorithmen und Datenstrukturen

Übung zum Kapitel "Bitmanipulationsoperatoren"

W. Tasin, M.Sc.


Theoretische Fragen

  • Ergänzen/Korrigieren Sie die folgenden unvollständige Codefragmente unter Verwendung von Bitmanipulationsoperationen:
    wert ist dabei eine Ganzzahlvariable.
printf("Wert ist ");
if ((wert & 0x1) !=0 )
  puts("ungerade.")
else
  puts("gerade");

/* Setze Bit 7 von wert */
wert=  wert | 0x80    ;

/* Lösche Bit 8 und alle höherwertigen Bits von wert */
wert=  wert & 0xFF    ;

int wert=0x55;
/* Toggle die Bits 0-7 der Variablen Wert */
wert=  wert ^ 0xFF    ;
printf("Wert = %X\n", wert);

  • Welcher Wert befindet sich in zahl nach Ablauf der jeweiligen Codefragmente:
short zahl=4;
zahl=zahl>>1;    /* --> zahl == 2  */

short zahl=-4;
zahl=zahl>>1;    /* --> zahl == -2  */

int zahl=12;
zahl=zahl<<2;    /* --> zahl == 48  */

signed char zahl=64;
zahl=zahl<<1;    /* --> zahl == -128 , da Typ (signed char)  */

int zahl=0x80;
zahl=zahl ^ -1;      /* --> zahl == 0xFFFFFF7F == -129 */
zahl=zahl & 0xFF;    /* --> zahl == 0x0000007F == +127 */

  • Was macht das folgende Programm?

#include <stdio.h>

int main()
{
    unsigned char expo=0;

    while (expo<32)
    {
        printf("%10u (0x%08X)\n", 1u << expo, 1u << expo); 
        expo=expo+1;
    }
    return 0;
}

Das Programm gibt alle 2er-Potenzen eines 32-bit unsigned-Wertes (dezimal und hexadezimal) aus; die Ausgabe erfolgt als positive Ganzzahl da Formatspezifizierer "%u" bzw. "%X" verwendet wird:

         1 (0x00000001)
         2 (0x00000002)
         4 (0x00000004)
         8 (0x00000008)
        16 (0x00000010)
        32 (0x00000020)
        64 (0x00000040)
       128 (0x00000080)
       256 (0x00000100)
       512 (0x00000200)
      1024 (0x00000400)
      2048 (0x00000800)
      4096 (0x00001000)
      8192 (0x00002000)
     16384 (0x00004000)
     32768 (0x00008000)
     65536 (0x00010000)
    131072 (0x00020000)
    262144 (0x00040000)
    524288 (0x00080000)
   1048576 (0x00100000)
   2097152 (0x00200000)
   4194304 (0x00400000)
   8388608 (0x00800000)
  16777216 (0x01000000)
  33554432 (0x02000000)
  67108864 (0x04000000)
 134217728 (0x08000000)
 268435456 (0x10000000)
 536870912 (0x20000000)
1073741824 (0x40000000)
2147483648 (0x80000000)


Links

Uebungen Algorithmen und Datenstrukturen
Unterlagen Algorithmen und Datenstrukturen
Praktikum Algorithmen und Datenstrukturen
Zur Hauptseite