Bitmanipulation

Files at this revision

API Documentation at this revision

Comitter:
robertbuc
Date:
Sun Jan 12 22:33:32 2020 +0000
Commit message:
Lekt2_Bitmanipulation

Changed in this revision

A1_Lekt2_LaufShift_Bitmanipulation.cpp Show annotated file Show diff for this revision Revisions of this file
A2u3_Lekt2_SetDelTogBits_and_ByteShift_Bitmanipulation.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/A1_Lekt2_LaufShift_Bitmanipulation.cpp	Sun Jan 12 22:33:32 2020 +0000
@@ -0,0 +1,30 @@
+/*
+0. Aufgabe: [LaufShift]] Programmiere ein Lauflicht für die 
+vier blauen Leds mit BusOut und Verschiebe Operatoren.
+*/
+
+#include "mbed.h"
+
+//BusOut leds(D0,D3,D6,D9,D11,D12,A1,A5);
+BusOut leds(D0,D3,D6,D9);
+
+void laufshift();
+int main()
+{
+    
+    while(1)
+    {
+        laufshift(); 
+    }    
+}
+
+void laufshift()
+{
+    leds=1;
+    wait_ms(250);
+    for(int i=1;i<5;i++) 
+    {
+        leds=leds<<1;
+        wait_ms(250);    
+    }   
+}
\ No newline at end of file
--- /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");
+}