void int_to_bin_digit(int in, int count, int* out)
{
int mask = 1U << (count-1); // LINE 1
int i;
for (i = 0; i < count; i++)
{
out[i] = (in & mask) ? 1 : 0; // LINE 3 (I don't understand it)
in <<= 1; // LINE 2
}
}
我需要一個函數將int轉換爲binary.I不知道如何自己創建一個,因爲我從來沒有使用位運算符。我在這裏發現了這個工作。將整數轉換爲二進制。我不明白這個功能是如何工作的
假設我們調用函數像這樣int_to_bin_digit(67,8,出來)
我明白線1給屏蔽值128(1000 0000),以及線2使得67(0100 0011)是這樣的(不知道這個)
i=0 (0100 0011)
-----------
i=1 (1000 0110)
i=2 (0000 1100)
i=3 (0001 1000)
i=4 (0011 0000)
i=5 (0110 0000)
i=6 (1100 0000)
i=7 (1000 0000) (loop stops here)
(0000 0000) (so we never get to this one I guess)
是否線3只比較第一1和返回1,如果它的== 1和返回0,如果它是!= 1?它是如何工作的?
編輯:https://davidzych.com/converting-an-int-to-a-binary-string-in-c/看完這個後。我看到我們只比較裏面的第一個和第一個裏面的掩碼 我不明白爲什麼它不會每次都返回1,只比較前幾位?
使用調試器觀察out數組並逐步執行代碼。 – AmeyaVS