The average amount of time (in seconds) to find a single share is:
difficulty * 2^32 / hashrate
In that equation, difficulty is the difficulty of a share and hashrate is your hash rate in hashes per second. A day has 86,400 seconds in it, so the number of shares you'll find in 24 hours is:
86,400 / (difficulty * 2^32 / hashrate)
A slightly more complex formula, using PHP:
$hashTime = ((float) $difficulty) * (pow(2.0, 32) / ($hashRate * 1000.0)) ;
$powerCostPerYear = 365.25 * 24.0 * $powerConsumption / 1000.0 * $electricityRate;
$blocksPerYear = (365.25 * 24.0 * 3600.0) / $hashTime ;
$coinsPerYear = $blockCoins * $blocksPerYear;
$revenuePerYear = $coinsPerYear * $conversionRate;
$profitPerYear = $revenuePerYear - $powerCostPerYear;
$netProfit1st = $revenuePerYear - $costHardware - $powerCostPerYear;
if ($profitPerYear <= 0) $breakEvenTime = -1;
else $breakEvenTime = $costHardware / ($profitPerYear / (365.25 * 24.0 * 3600.0));
@nallenscott I think because the first 32 bits are always 0. Those bits are not in the float representation, which is how the difficulty is often displayed.
"The Bitcoin protocol represents targets as a custom floating point type with limited precision; as a result, Bitcoin clients often approximate difficulty based on this (this is known as "bdiff")." https://en.bitcoin.it/wiki/Difficulty#How_soon_might_I_expect_to_generate_a_block.3F
3There are some unstated things in this formula, like $electricityRate should be in dollars per kilowatt hour, or that $hashRate is measured in Khash/s. If you documented those things, this would be a great answer. – Nick ODell – 2013-03-22T15:24:48.267
1What the heck is a share? How many shares are there per bitcoin? Where does the difficulty number come from? This answer seems quite incomplete. – Qwertie – 2014-05-13T15:25:12.397
2Can you explain or reference where the 2^32 number comes from and how it's calculated? – nallenscott – 2016-05-22T13:23:07.963