Skyraz00
Grünschnabel
Hallo,
ich habe ein Programm geschrieben welches zwei bytes invertiert, setzt und löscht.
Jetzt wollte ich jeden Schritt in eine eigene Funktion packen und habe dabei einen Fehler gemacht den ich
nicht finde.
Wenn mir jemand sagen könnte was ich falsch gemacht habe wäre mir sehr geholfen.
MfG Skyraz00
ich habe ein Programm geschrieben welches zwei bytes invertiert, setzt und löscht.
Jetzt wollte ich jeden Schritt in eine eigene Funktion packen und habe dabei einen Fehler gemacht den ich
nicht finde.
Wenn mir jemand sagen könnte was ich falsch gemacht habe wäre mir sehr geholfen.
MfG Skyraz00
C:
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
void bitnInvert(uint8_t number1, uint8_t mask);
void bitnSet(uint8_t number1, uint8_t setBits);
void bitnClear(uint8_t number1, uint8_t number2);
void displayBits(uint8_t value); // prototype
void main()
{
uint8_t number1 = 217;
uint8_t number2 = 43;
uint8_t mask = 1;
uint8_t setBits = 241;
uint8_t value;
bitnInvert(number1, mask);
bitnSet(number1, setBits);
bitnClear(number1, number2);
displayBits(value);
} // end main
void bitnInvert(uint8_t number1, uint8_t mask)
{
// demonstrate bitwise AND (&)
puts("The result of combining the following");
displayBits(number1);
displayBits(mask);
puts("using the bitwise AND operator & is");
displayBits(number1 & mask);
}
void bitnSet(uint8_t number1, uint8_t setBits)
{
// demonstrate bitwise inclusive OR (|)
puts("\nThe result of combining the following");
displayBits(number1);
displayBits(setBits);
puts("using the bitwise inclusive OR operator | is");
displayBits(number1 | setBits);
}
void bitnClear(uint8_t number1, uint8_t number2)
{
// demonstrate bitwise exclusive OR (^)
puts("\nThe result of combining the following");
displayBits(number1);
displayBits(number2);
puts("using the bitwise exclusive OR operator ^ is");
displayBits(number1 ^ number2);
}
// display bits of an unsigned int value
void displayBits(uint8_t value)
{
uint8_t i; // loop counter
// define mask and left shift 31 bits
uint8_t SHIFT = 8 * sizeof(value) - 1;
uint8_t MASK = 1 << SHIFT;
printf("%hhu = ", value);
// loop through bits
for (i = 1; i <= SHIFT + 1; ++i) {
putchar(value & MASK ? '1' : '0');
value <<= 1; // shift value left by 1
if (i % 8 == 0) { // output space after 8 bits
putchar(' ');
} // end if
} // end for
puts("");
} // end function displayBits