Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: A2u3_Lekt2_SetDelTogBits_and_ByteShift_Bitmanipulation.cpp
- Revision:
- 0:56207c59a56d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/A2u3_Lekt2_SetDelTogBits_and_ByteShift_Bitmanipulation.cpp Sun Jan 12 22:33:32 2020 +0000
@@ -0,0 +1,137 @@
+#include "mbed.h"
+
+/*
+[SetDelTogBits] Schreibe ein Programm das folgende Tasks beinhaltet:
+
+//MSB LSB
+
+ Lösche (0) das LSB (least significant bit), MSB (most significant bit) beim Datentype uint8_t.
+ Setze (1) das LSB (least significant bit), MSB (most significant bit) beim Datentype uint16_t.
+ Toggle (0 wird 1 bzw. 1 wird 0) das LSB (least significant bit), MSB (most significant bit) beim Datentype uint32_t.
+ Lösche/Setze/Toggle das 3. und das 5. Bit beim Datentype uint8_t.
+*/
+BusOut myleds(LED1, LED2, LED3, LED4);
+
+
+void print_binary(uint8_t x) { // function to print binary
+ for(int i=sizeof(x)<<3; i; i--)
+ putchar('0'+((x>>(i-1))&1));
+}
+
+void delbits();
+void setbits();
+void togbits();
+void lst_3_5();
+
+int main() {
+ //delbits();
+ //setbits();
+ //togbits();
+ //lst_3_5();
+}
+
+void lst_3_5()
+{
+ //uint8_t value = 0b11111111; //löschen
+ //uint8_t mask = 0b00010100; //löschen
+
+ //uint8_t value = 0b11101011; //setzen
+ //uint8_t mask = 0b00010100; //setzen
+
+ uint8_t value = 0b10000100; //toggeln
+ uint8_t mask = 0b00010100; //toggeln
+
+
+
+ printf("value: ");
+ print_binary(value);
+ printf(" orginal! \n");
+
+ printf("\n===========================\n");
+ printf("mask: ");
+ print_binary(mask);
+ printf("\n===========================\n\n");
+
+ //value=value| (1 << 2) | (1 << 4); //1000 0000 wird zu 10010100 //setzen
+
+ //value=value&~mask; //LÖSCHEN an 3. und 5. Stelle
+ //value=value|mask; //SETZEN an 3. und 5. Stelle
+ //value=value^mask; //TOGGELN an 3. und 5. Stelle
+ printf("value: ");
+ print_binary(value);
+ printf(" geändert! \n");
+
+}
+
+
+void togbits()
+{
+ uint32_t value = 0b10011001;
+ uint32_t mask = 0b11111111;
+
+ printf("value: ");
+ print_binary(value);
+
+ printf(" orginal! \n");
+
+
+ printf("\n===========================\n");
+ printf("mask: ");
+ print_binary(mask);
+ printf("\n===========================\n\n");
+
+ value=value^mask; //TOGGELN ^ EXOR und alles 1er in mask
+ printf("value: ");
+ print_binary(value);
+ printf(" geandert! \n");
+
+}
+
+
+void setbits()
+{
+ uint16_t value = 0b00011000;
+ uint16_t mask = 0b10000001;
+
+ printf("value: ");
+ print_binary(value);
+
+ printf(" orginal! \n");
+
+
+
+ printf("\n===========================\n");
+ printf("mask: ");
+ print_binary(mask);
+ printf("\n===========================\n\n");
+
+ value=value|mask; //SETZEN
+ printf("value: ");
+ print_binary(value);
+ printf(" geandert! \n");
+}
+
+
+void delbits()
+{
+
+ uint8_t value = 0b10011001;
+ uint8_t mask = 0b10000001;
+
+ printf("value: ");
+ print_binary(value);
+
+ printf(" orginal! \n");
+
+
+
+ printf("\n===========================\n");
+ printf("mask: ");
+ print_binary(mask);
+ printf("\n===========================\n\n");
+
+ value=value&~mask; //LÖSCHEN
+ printf("value: ");
+ print_binary(value);
+ printf(" geandert! \n");
+}