08-11-2009, 17:10
|
|
|
|
חבר מתאריך: 12.04.06
הודעות: 2,021
|
|
תסובב את הסיביות ותבודד את הסיבית הימנית ביותר.
משהו כזה:
קוד:
char x = 0x06;
char num = 0;
while(x != 0){
num += (x & 0x01);
x = x >> 1;
}
printf("%d",num);
אם לא איכפת לך שהמספר הראשוני משתנה, הדרך הזאת תעבוד.
כל עוד אתה מסובב ויש 1 במספר - הלולאה תתקיים.
הלולאה בעצם מזיזה את כל הסיביות במספר ימינה.
לאחר מכן, במשתנה num היא שומרת את המספר בו ועוד ערך הסיבית הימנית.
אם הסיבית הימנית היא 0, יהיה num + 0 משמע, אותו מספר.
אם הסיבית הימנית היא 1, יהיה num + 1 משמע, המספר גדל באחד.
_____________________________________
נערך לאחרונה ע"י MatiM בתאריך 08-11-2009 בשעה 17:16.
|