Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <assert.h>
- #include <stdint.h>
- #define PRINT_BITS(number) { \
- unsigned int n = (number); \
- unsigned int size_of_int = sizeof(n) * 8; \
- int space = 0; \
- for (int i = size_of_int - 1; i >= 0; i--) { \
- unsigned int mask = 1 << i; \
- putchar(n & mask ? '1' : '0'); \
- if (++space % 4 == 0 && i != 0) putchar(' '); \
- } \
- putchar('\n'); \
- }
- /* Function declarations */
- void Ex1();
- void Ex2();
- void Ex3();
- void Ex4();
- void Ex5();
- void Ex6();
- void Ex7();
- void Ex8();
- void Ex9();
- void Ex10();
- void Ex11();
- void Ex12();
- void Ex13();
- void Ex14();
- void Ex15();
- void Ex16();
- void Ex17();
- void Ex18();
- void Ex19();
- void Ex20();
- void Ex21();
- void Ex22();
- void Ex23();
- void Ex24();
- void Ex25();
- void Ex26();
- void Ex27();
- void Ex28();
- int main(void)
- {
- int select = 0, i, all_Ex_in_loop = 0;
- printf("Run menu once or cyclically?\n(Once - enter 0, cyclically -enter other number) ");
- if (scanf("%d", &all_Ex_in_loop) == 1)
- do
- {
- for (i = 1; i <= 28; i++)
- printf("Ex%d--->%d\n", i, i);
- printf("EXIT-->0\n");
- do {
- select = 0;
- printf("please select 0-28 : ");
- scanf("%d", &select);
- } while ((select < 0) || (select > 28));
- switch (select)
- {
- case 1: Ex1(); break;
- case 2: Ex2(); break;
- case 3: Ex3(); break;
- case 4: Ex4(); break;
- case 5: Ex5(); break;
- case 6: Ex6(); break;
- case 7: Ex7(); break;
- case 8: Ex8(); break;
- case 9: Ex9(); break;
- case 10: Ex10(); break;
- case 11: Ex11(); break;
- case 12: Ex12(); break;
- case 13: Ex13(); break;
- case 14: Ex14(); break;
- case 15: Ex15(); break;
- case 16: Ex16(); break;
- case 17: Ex17(); break;
- case 18: Ex18(); break;
- case 19: Ex19(); break;
- case 20: Ex20(); break;
- case 21: Ex21(); break;
- case 22: Ex22(); break;
- case 23: Ex23(); break;
- case 24: Ex24(); break;
- case 25: Ex25(); break;
- case 26: Ex26(); break;
- case 27: Ex27(); break;
- case 28: Ex28(); break;
- }
- } while (all_Ex_in_loop && select);
- return 0;
- }
- void set_bit(uint32_t* src, uint8_t bit){
- *src |= (1 << bit);
- }
- void Ex1()
- {
- uint32_t number = 0;
- PRINT_BITS(number);
- set_bit(&number,3);
- PRINT_BITS(number);
- set_bit(&number,31);
- PRINT_BITS(number);
- }
- void clear_bit(uint32_t* src, uint8_t bit){
- *src &= ~(1 << bit);
- }
- void Ex2()
- {
- uint32_t number = UINT32_MAX;
- PRINT_BITS(number);
- clear_bit(&number,3);
- PRINT_BITS(number);
- clear_bit(&number,31);
- PRINT_BITS(number);
- }
- void toggle_bit(uint32_t* src, uint8_t bit){
- *src ^= (1 << bit);
- }
- void Ex3()
- {
- uint32_t number = 0;
- PRINT_BITS(number);
- toggle_bit(&number,3);
- PRINT_BITS(number);
- toggle_bit(&number,31);
- PRINT_BITS(number);
- toggle_bit(&number,3);
- PRINT_BITS(number);
- }
- /*
- * also set off
- */
- void reset_all(uint32_t* number){
- *number = 0;
- }
- void Ex4()
- {
- uint32_t number = 123123123;
- PRINT_BITS(number);
- reset_all(&number);
- PRINT_BITS(number);
- }
- /*
- * Not generic
- */
- void set_all(uint32_t* number){
- uint32_t mask = UINT32_MAX;
- *number |= mask;
- }
- void Ex5()
- {
- uint32_t number = 0;
- PRINT_BITS(number);
- set_all(&number);
- PRINT_BITS(number);
- }
- void set_all_generic(uint32_t* number){
- *number |= ~0;
- }
- void Ex6()
- {
- uint32_t number = 0;
- PRINT_BITS(number);
- set_all_generic(&number);
- PRINT_BITS(number);
- }
- uint8_t is_power_of_two(uint32_t* src){
- return (*src &= (*src - 1)) == 0? 1 : 0;
- }
- void Ex7()
- {
- uint32_t test = 16;
- is_power_of_two(&test)? printf("Y\n") : printf("N\n");
- test = 7;
- is_power_of_two(&test)? printf("Y\n") : printf("N\n");
- }
- uint8_t get_val(uint32_t* src, uint8_t bit_loc){
- return (*src >> bit_loc) & 1;
- }
- void Ex8()
- {
- uint32_t test = 16;
- printf("bit is %d\n",get_val(&test,2));
- test = 7;
- printf("bit is %d\n",get_val(&test,0));
- }
- /*
- * todo:
- * mirror bits
- * rotate_left
- * rotate_right
- * count_on
- * count_off
- * to_string
- * add_one
- *
- * void_swap
- * strlen_implementation
- * strcpy_implementation
- * strcmp_implementation
- * strcat_implementation
- * my_memcpy
- * my_memset
- * my_memmove
- *
- * deadlock (how do that with 2 threads + 2 mutexes)
- * do project (uml + visual)
- * OOD
- *
- * aligned_malloc
- * aligned_free
- */
- void Ex9()
- {
- }
- void Ex10()
- {
- }
- //------------------------------------------------------------------------------
- void Ex11()
- {
- }
- void Ex12()
- {
- }
- void Ex13()
- {
- }
- void Ex14()
- {
- }
- void Ex15()
- {
- }
- void Ex16()
- {
- }
- void Ex17()
- {
- }
- void Ex18()
- {
- }
- void Ex19()
- {
- }
- void Ex20()
- {
- }
- void Ex21()
- {
- }
- void Ex22()
- {
- }
- void Ex23()
- {
- }
- void Ex24()
- {
- }
- void Ex25()
- {
- }
- void Ex26()
- {
- }
- void Ex27()
- {
- }
- void Ex28()
- {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement