Another thing in your first program I see your wanting to show the user the number of times the loop iterates (loops). Keep in mind in programming we start from zero not one so it will read 0, 1, 2, ....
Get rid of the while loop and put this, (number / (2 ^ i) < 1, in the loop condition for the for loop. You don't seem to need the second loop or you could get rid of the for loop all together and use a do while loop.
http://www.cplusplus.com/doc/tutorial/control/
Not completely sure that your arithmetic syntax is correct. Im some what new to C++ but I've never seen 2^i, I think your attempting to, say i was equal to 2 your trying to say 2 square? I don't know if that will work never used ^ before, but I might be wrong. Also I don't think your need the break, I don't understand why its there.
Also you can't take digitcount out of a void function it would be out of scope. You would need a value returning function.
http://www.cplusplus.com/doc/tutorial/functions/
The value return function would need to be in the same data type as the variable your returning.
You really need to read about loops, your using while loops all wrong. Your second function should be changed as well. Read about loops and see what you come up with and we'll go from there.
In general you have two problems effecting your program how your using loops and how your using functions.
The functions aren't bad but if you want to take a value out of a function it shouldn't be a void function.