Isn't Bitcoin's hash target supposed to be a power of 2? From Bitcoin's whitepaper I've gathered that the hash of a block must start with a certain number of zeroes. And that this number of zeroes is adjusted every 2 weeks. Consequently the hash target is a power of two.
Requiring an extra zero for the hash function will divide the hash target by 2.
With that being said, in another question on the exchange (How is difficulty calculated?) it appears that the difficulty can be multiplied by fractions (e.g. 40%).
Does that mean that the hash targets aren't necessarily powers of 2? Or is the target rounded to the nearest power of 2?
Contrary to popular belief, the target is not actually based on the number of leading zeroes. This is a major simplification that is used to get the general idea across, but is not actually how the code works. Instead, the target is just a number that is adjusted by the ratio between the actual time between blocks and the expected time between blocks (with an off by one error which actually causes it to not quite work as expected). So the targets are not necessarily multiples of 2.
There is one additional caveat - the new difficulty can only be at least a quarter of and at most 4 times more than the old difficulty. The multiplier (the ratio between times) thus must be between 1/4 and 4.