#include <stdio.h>

unsigned int countOnes(int number)
{
	int count;
	while(number) // :)
	{
		if(number % 2 == 1)
			count++;
		number /= 2; // number = number/2 OR number >> 1
	}
	return count;
}

unsigned int countOnes1(int x)
{
	int i;
	int returnValue = 0;
	for (i=0; i < sizeof(int)*8; i++)
	{
		if(x & 1  == 1)
			returnValue++;
		x = x >> 1;
	}
	return returnValue;
	
}


void addOne(int * x, int * y)
{
	*x = x + 1;
	*y = *y + 1;
}


void incrementPointer(int ** intArrrayPtr)
{
	(*intArrrayPtr)++;	// *intArrray = * intArrray + 1;
}

int main(int argc, int *argv[])
{
	int i = 10;
	int j = 12;
	int numChars[26];
	char *string = "abcdxzy";
	int intArray[4] = {0, 1, 2, 3};
	
	int *intArrayPtr = intArray;
	
	incrementPointer(&intArrayPtr);
	
	printf("intArrayPtr points to %d\n", *intArrayPtr);
	
	addOne(&i, &j);
	printf("i is %d, j is %d\n", i, j);
	
	
	
	printf("Number of 1's is %d\n", countOnes(-1));
	
	printf("-1 >> 1 is %d\n", -1 >> 5);
	
	
	/*for(i=0;i<26;i++)
		numChars[i] = 0;
	
	countCharacters(string, numChars);
	
	for(i = 0; i < 26; i++)
		printf("# %c is %d\n", 0x61+i, numChars[i]);*/
			
}






















/*
void countCharacters(char *s, int * resultArray)
{
	int i;
	for (i=0; *(s+i) != 0; i++)
	{
		printf("*s+i is %c\n", *(s+i));
		(*(resultArray + (*(s+i) - 0x61)))++;
	}
	
}
*/