#include <iostream>
#include <cstdint>
#include <time.h>
using namespace std;
#define ID_LENGTH 8 // 設定BIT長度
void foo(uint32_t id, char* disp)
{
if(disp == NULL) // 避免NULL Pointer
return;
uint32_t bit_mask = (1 << (ID_LENGTH) - 1); // 位元檢查遮罩
for(int i = 0; i < ID_LENGTH; i++)
{
disp[i] = ((id & bit_mask) == bit_mask)?'1':'0'; // 這一行等價於下面的程式碼
/*
if((id & bit_mask) == bit_mask)
disp[i] = '1';
else
disp[i] = '0'
*/
bit_mask >>= 1; // 位移一次檢查遮罩,檢查下一位元
}
}
int main() {
char id_display[ID_LENGTH + 1] = {0}; // 設定字串陣列長度,+1是為了放結束字元
srand(time(NULL));
for(int i = 0; i < 10; i++)
{
uint32_t id = (uint32_t)(rand() % 7 + 1); // 隨機生成一個ID
foo(id, id_display); // 字串處理
printf("ID = %u, disp = %s\n", id, id_display); // 顯示ID及字串處理結果
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGludD4KI2luY2x1ZGUgPHRpbWUuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgSURfTEVOR1RIIDggIC8vIOioreWumkJJVOmVt+W6pgoKdm9pZCBmb28odWludDMyX3QgaWQsIGNoYXIqIGRpc3ApCnsKCWlmKGRpc3AgPT0gTlVMTCkgIC8vIOmBv+WFjU5VTEwgUG9pbnRlcgoJCXJldHVybjsKCXVpbnQzMl90IGJpdF9tYXNrID0gKDEgPDwgKElEX0xFTkdUSCkgLSAxKTsgIC8vIOS9jeWFg+aqouafpemBrue9qQoJZm9yKGludCBpID0gMDsgaSA8IElEX0xFTkdUSDsgaSsrKQoJewoJCWRpc3BbaV0gPSAoKGlkICYgYml0X21hc2spID09IGJpdF9tYXNrKT8nMSc6JzAnOyAvLyDpgJnkuIDooYznrYnlg7nmlrzkuIvpnaLnmoTnqIvlvI/norwKCQkvKgoJCWlmKChpZCAmIGJpdF9tYXNrKSA9PSBiaXRfbWFzaykKCQkgICAgZGlzcFtpXSA9ICcxJzsKCQllbHNlCgkJCWRpc3BbaV0gPSAnMCcKCQkqLwoJCWJpdF9tYXNrID4+PSAxOyAgLy8g5L2N56e75LiA5qyh5qqi5p+l6YGu572p77yM5qqi5p+l5LiL5LiA5L2N5YWDCgl9Cn0KCgppbnQgbWFpbigpIHsKCWNoYXIgaWRfZGlzcGxheVtJRF9MRU5HVEggKyAxXSA9IHswfTsgICAgICAvLyDoqK3lrprlrZfkuLLpmaPliJfplbfluqbvvIwrMeaYr+eCuuS6huaUvue1kOadn+Wtl+WFgwoJc3JhbmQodGltZShOVUxMKSk7Cglmb3IoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykKCXsKCQl1aW50MzJfdCBpZCA9ICh1aW50MzJfdCkocmFuZCgpICUgNyArIDEpOyAgLy8g6Zqo5qmf55Sf5oiQ5LiA5YCLSUQKCQlmb28oaWQsIGlkX2Rpc3BsYXkpOyAgICAgICAgICAgICAgICAgICAgICAgLy8g5a2X5Liy6JmV55CGCgkJcHJpbnRmKCJJRCA9ICV1LCBkaXNwID0gJXNcbiIsIGlkLCBpZF9kaXNwbGF5KTsgIC8vIOmhr+ekuklE5Y+K5a2X5Liy6JmV55CG57WQ5p6cCgl9CglyZXR1cm4gMDsKfQ==
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