Вот такое задание - подсчитать кол-во троек в 16-ричном представлении числа.
вот что у меня получилось (но считает не все 3-ки):
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[60];
unsigned x,mask;
int i=0;
printf ("Vvedite cheloe neotrichatel'noe 4islo\n");
scanf("%d", &x);
printf("V 16-oi sisteme: %x\n\n",x);
itoa(x, str, 2);
printf("vvedennoe chislo v 2-i sisteme schislenia: %s\n", str);
mask = 0x0011;
while (mask>0)
{
if ((mask&x) == mask)
i+=1;
mask<<=2;
}
printf("\nKol-vo 3-ek v 16-m predstavlenii 4isla: %d\n",i);
return 0;
}
mask = 0x3; // Почему у тебя было 0x11 ? Это не тройка, а 17
while (mask>0)
{
if ((mask&x) == mask)
i+=1;
mask<<=4; // А вот тут надо сдвигать на 4, потому что 16 ричное число представляется тетрадами
}
Понятно. спасибо!