Advertisement
edensheiko

c_temp

Dec 16th, 2023
746
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.48 KB | Software | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <assert.h>
  5. #include <stdint.h>
  6.  
  7.  
  8. #define PRINT_BITS(number) { \
  9.     unsigned int n = (number); \
  10.     unsigned int size_of_int = sizeof(n) * 8; \
  11.     int space = 0; \
  12.     for (int i = size_of_int - 1; i >= 0; i--) { \
  13.         unsigned int mask = 1 << i; \
  14.         putchar(n & mask ? '1' : '0'); \
  15.         if (++space % 4 == 0 && i != 0) putchar(' '); \
  16.     } \
  17.     putchar('\n'); \
  18. }
  19.  
  20. /* Function declarations */
  21. void Ex1();
  22. void Ex2();
  23. void Ex3();
  24. void Ex4();
  25. void Ex5();
  26. void Ex6();
  27. void Ex7();
  28. void Ex8();
  29. void Ex9();
  30. void Ex10();
  31. void Ex11();
  32. void Ex12();
  33. void Ex13();
  34. void Ex14();
  35. void Ex15();
  36. void Ex16();
  37. void Ex17();
  38. void Ex18();
  39. void Ex19();
  40. void Ex20();
  41.  
  42. void Ex21();
  43. void Ex22();
  44. void Ex23();
  45. void Ex24();
  46. void Ex25();
  47. void Ex26();
  48. void Ex27();
  49. void Ex28();
  50.  
  51. int main(void)
  52. {
  53.     int select = 0, i, all_Ex_in_loop = 0;
  54.     printf("Run menu once or cyclically?\n(Once - enter 0, cyclically -enter other number) ");
  55.     if (scanf("%d", &all_Ex_in_loop) == 1)
  56.         do
  57.         {
  58.             for (i = 1; i <= 28; i++)
  59.                 printf("Ex%d--->%d\n", i, i);
  60.             printf("EXIT-->0\n");
  61.             do {
  62.                 select = 0;
  63.                 printf("please select 0-28 : ");
  64.                 scanf("%d", &select);
  65.             } while ((select < 0) || (select > 28));
  66.             switch (select)
  67.             {
  68.                 case 1: Ex1(); break;
  69.                 case 2: Ex2(); break;
  70.                 case 3: Ex3(); break;
  71.                 case 4: Ex4(); break;
  72.                 case 5: Ex5(); break;
  73.                 case 6: Ex6(); break;
  74.                 case 7: Ex7(); break;
  75.                 case 8: Ex8(); break;
  76.                 case 9: Ex9(); break;
  77.                 case 10: Ex10(); break;
  78.                 case 11: Ex11(); break;
  79.                 case 12: Ex12(); break;
  80.                 case 13: Ex13(); break;
  81.                 case 14: Ex14(); break;
  82.                 case 15: Ex15(); break;
  83.                 case 16: Ex16(); break;
  84.                 case 17: Ex17(); break;
  85.                 case 18: Ex18(); break;
  86.                 case 19: Ex19(); break;
  87.                 case 20: Ex20(); break;
  88.  
  89.                     case 21: Ex21(); break;
  90.                     case 22: Ex22(); break;
  91.                     case 23: Ex23(); break;
  92.                     case 24: Ex24(); break;
  93.                     case 25: Ex25(); break;
  94.                     case 26: Ex26(); break;
  95.                     case 27: Ex27(); break;
  96.                     case 28: Ex28(); break;
  97.  
  98.             }
  99.         } while (all_Ex_in_loop && select);
  100.     return 0;
  101. }
  102. void set_bit(uint32_t* src, uint8_t bit){
  103.     *src |= (1 << bit);
  104. }
  105. void Ex1()
  106. {
  107.     uint32_t number = 0;
  108.     PRINT_BITS(number);
  109.     set_bit(&number,3);
  110.     PRINT_BITS(number);
  111.     set_bit(&number,31);
  112.     PRINT_BITS(number);
  113. }
  114. void clear_bit(uint32_t* src, uint8_t bit){
  115.     *src &= ~(1 << bit);
  116. }
  117. void Ex2()
  118. {
  119.     uint32_t number = UINT32_MAX;
  120.     PRINT_BITS(number);
  121.     clear_bit(&number,3);
  122.     PRINT_BITS(number);
  123.     clear_bit(&number,31);
  124.     PRINT_BITS(number);
  125. }
  126. void toggle_bit(uint32_t* src, uint8_t bit){
  127.     *src ^= (1 << bit);
  128. }
  129. void Ex3()
  130. {
  131.     uint32_t number = 0;
  132.     PRINT_BITS(number);
  133.     toggle_bit(&number,3);
  134.     PRINT_BITS(number);
  135.     toggle_bit(&number,31);
  136.     PRINT_BITS(number);
  137.     toggle_bit(&number,3);
  138.     PRINT_BITS(number);
  139. }
  140. /*
  141.  * also set off
  142.  */
  143. void reset_all(uint32_t* number){
  144.     *number = 0;
  145. }
  146. void Ex4()
  147. {
  148.     uint32_t number = 123123123;
  149.     PRINT_BITS(number);
  150.     reset_all(&number);
  151.     PRINT_BITS(number);
  152. }
  153. /*
  154.  * Not generic
  155.  */
  156. void set_all(uint32_t* number){
  157.     uint32_t mask = UINT32_MAX;
  158.     *number |= mask;
  159. }
  160. void Ex5()
  161. {
  162.     uint32_t number = 0;
  163.     PRINT_BITS(number);
  164.     set_all(&number);
  165.     PRINT_BITS(number);
  166. }
  167. void set_all_generic(uint32_t* number){
  168.    *number |= ~0;
  169. }
  170. void Ex6()
  171. {
  172.     uint32_t number = 0;
  173.     PRINT_BITS(number);
  174.     set_all_generic(&number);
  175.     PRINT_BITS(number);
  176. }
  177. uint8_t is_power_of_two(uint32_t* src){
  178.     return (*src &= (*src - 1)) == 0? 1 : 0;
  179. }
  180. void Ex7()
  181. {
  182.     uint32_t test = 16;
  183.     is_power_of_two(&test)? printf("Y\n") : printf("N\n");
  184.     test = 7;
  185.     is_power_of_two(&test)? printf("Y\n") : printf("N\n");
  186. }
  187. uint8_t get_val(uint32_t* src, uint8_t bit_loc){
  188.     return (*src >> bit_loc) & 1;
  189. }
  190. void Ex8()
  191. {
  192.     uint32_t test = 16;
  193.     printf("bit is %d\n",get_val(&test,2));
  194.     test = 7;
  195.     printf("bit is %d\n",get_val(&test,0));
  196.  
  197. }
  198. /*
  199.  * todo:
  200.  * mirror bits
  201.  * rotate_left
  202.  * rotate_right
  203.  * count_on
  204.  * count_off
  205.  * to_string
  206.  * add_one
  207.  *
  208.  * void_swap
  209.  * strlen_implementation
  210.  * strcpy_implementation
  211.  * strcmp_implementation
  212.  * strcat_implementation
  213.  * my_memcpy
  214.  * my_memset
  215.  * my_memmove
  216.  *
  217.  * deadlock (how do that with 2 threads + 2 mutexes)
  218.  * do project (uml + visual)
  219.  * OOD
  220.  *
  221.  * aligned_malloc
  222.  * aligned_free
  223.  */
  224. void Ex9()
  225. {
  226.  
  227. }
  228.  
  229.  
  230. void Ex10()
  231. {
  232.  
  233. }
  234. //------------------------------------------------------------------------------
  235.  
  236. void Ex11()
  237. {
  238.  
  239. }
  240. void Ex12()
  241. {
  242.  
  243. }
  244.  
  245.  
  246. void Ex13()
  247. {
  248.  
  249. }
  250.  
  251. void Ex14()
  252. {
  253.  
  254. }
  255.  
  256. void Ex15()
  257. {
  258.  
  259.  
  260. }
  261.  
  262. void Ex16()
  263. {
  264.  
  265. }
  266. void Ex17()
  267. {
  268.  
  269. }
  270.  
  271. void Ex18()
  272. {
  273.  
  274. }
  275.  
  276. void Ex19()
  277. {
  278.  
  279.  
  280. }
  281.  
  282. void Ex20()
  283. {
  284.  
  285.  
  286. }
  287.  
  288. void Ex21()
  289. {
  290.  
  291. }
  292.  
  293. void Ex22()
  294. {
  295.  
  296. }
  297.  
  298. void Ex23()
  299. {
  300.  
  301. }
  302.  
  303. void Ex24()
  304. {
  305.  
  306. }
  307.  
  308. void Ex25()
  309. {
  310.  
  311. }
  312.  
  313. void Ex26()
  314. {
  315.  
  316. }
  317.  
  318. void Ex27()
  319. {
  320.  
  321. }
  322.  
  323. void Ex28()
  324. {
  325.  
  326. }
Tags: cpp/c
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement