fork download
  1. #include <iostream>
  2. #include <cstdint>
  3. #include <time.h>
  4. using namespace std;
  5.  
  6. #define ID_LENGTH 8 // 設定BIT長度
  7.  
  8. void foo(uint32_t id, char* disp)
  9. {
  10. if(disp == NULL) // 避免NULL Pointer
  11. return;
  12. uint32_t bit_mask = (1 << (ID_LENGTH) - 1); // 位元檢查遮罩
  13. for(int i = 0; i < ID_LENGTH; i++)
  14. {
  15. disp[i] = ((id & bit_mask) == bit_mask)?'1':'0'; // 這一行等價於下面的程式碼
  16. /*
  17. if((id & bit_mask) == bit_mask)
  18. disp[i] = '1';
  19. else
  20. disp[i] = '0'
  21. */
  22. bit_mask >>= 1; // 位移一次檢查遮罩,檢查下一位元
  23. }
  24. }
  25.  
  26.  
  27. int main() {
  28. char id_display[ID_LENGTH + 1] = {0}; // 設定字串陣列長度,+1是為了放結束字元
  29. srand(time(NULL));
  30. for(int i = 0; i < 10; i++)
  31. {
  32. uint32_t id = (uint32_t)(rand() % 7 + 1); // 隨機生成一個ID
  33. foo(id, id_display); // 字串處理
  34. printf("ID = %u, disp = %s\n", id, id_display); // 顯示ID及字串處理結果
  35. }
  36. return 0;
  37. }
Success #stdin #stdout 0s 4540KB
stdin
Standard input is empty
stdout
ID = 2, disp = 00000010
ID = 3, disp = 00000011
ID = 7, disp = 00000111
ID = 4, disp = 00000100
ID = 7, disp = 00000111
ID = 2, disp = 00000010
ID = 3, disp = 00000011
ID = 5, disp = 00000101
ID = 7, disp = 00000111
ID = 4, disp = 00000100