Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdbool.h>
- #include <stdio.h>
- #include <time.h>
- #include <math.h>
- #include <stdint.h>
- uint8_t getMask(uint8_t index, uint8_t length)
- {
- uint8_t Bits = 00000000;
- if(length!=0)
- {
- for (int i = length; i > 0; i--)
- {
- Bits |= 1 << index;
- index--;
- }
- }
- return Bits;
- }
- void displayBits(uint8_t value)
- {
- unsigned int i; // loop counter
- // define mask and left shift 31 bits
- const unsigned int SHIFT = 8 * sizeof(value) - 1;
- const unsigned int MASK = 1 << SHIFT;
- printf("0X%1.2X (%3u = ", value,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
- void bitnInvert(uint8_t* bytePtr, uint8_t index, uint8_t length)
- {
- uint8_t value = getMask(index, length) &~*bytePtr;
- displayBits(value);
- }
- void bitnSet(uint8_t* bytePtr, uint8_t index, uint8_t length)
- {
- uint8_t value = getMask(index, length) &~*bytePtr;
- displayBits(value);
- }
- void bitnClear(uint8_t* bytePtr, uint8_t index, uint8_t length)
- {
- uint8_t value = getMask(index, length) &~*bytePtr;
- displayBits(value);
- }
- int main(void)
- {
- srand(time(NULL));
- int Length = 0;
- int Index = 0;
- printf("Erzeugung einer Bitmaske (8 Bit)\n Position der ersten '1' eingeben (0-7) : ");
- scanf_s("%d", &Index);
- printf("Anzahl der '1' eingeben (0-8) : ");
- scanf_s("%d", &Length);
- printf("\n");
- printf("Bitmaske: ",getMask(Index, Length));
- displayBits(getMask(Index, Length));
- printf("\n");
- for (int i = 3; i > 0; i--)
- {
- int number = (0 + rand() % 255);
- printf("Byte ");
- displayBits(number);
- printf("Pos. %d, Laenge %d inventiert: ", Index, Length);
- bitnInvert(00000000,Index,Length);
- printf("\n");
- }
- printf("\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement