First off, 100 is a lot of exp. The default amount of EXP you need to gain a level is increased by 100 per level, with only 200 EXP required to make it from level 1 to level 2. After that, you need to earn 300 EXP (in addition to what you already have) to get to level 3, 400 more EXP to get to level 4, etc. So 100 is a lot.
On to the explanation, as far as I know, creeps give EXP based on their level. Before modifiers (such as the Hero/level EXP%, or the presence of multiple heroes, etc.) that EXP amount is 25 per level. So, in theory, a level 4 unit killed by a single hero will earn that single hero 100 EXP.
Of course, that's before modifiers. The modifier identified easiest is the one that dictates how much EXP a hero at a specific level will get, IE Hero XP Gained - Creep Reduction Table. If you want hero EXP to be nice and tidy, above all else, make the only integer in that field 100. The field Hero XP Gained - Normal, Table is (or is supposed to be) how much EXP per level is given (before the modifiers).
Finally, EXP is divided evenly between the heroes present, so if there are 2 heroes present, and the earned EXP is 50, 25 of that EXP goes to each hero. Also, if the option is not disabled, fully levelled heroes will still be given a portion of the EXP from a kill. This is speculation, but after the hero "receives" the EXP, it is put through the modifiers based on the hero's level, leaving you with the pitiful little 13 or whatever.
That's all of my knowledge on hero EXP gain, although I'm sure I could gain a considerable amount by messing with the other Hero XP Gain fields.