The question you opened
Buy one get one half off, or 35% off
Two identical shirts: one shop offers buy one get one 50% off, another takes 35% off both.
Which offer costs less for the pair?
The 35% off shop
Half off one of two shirts is 25% off the pair. A flat 35% beats it, and 65% of the pair is cheaper than 75%.
Two shops, two shirts, two offers. One shop says buy one get one 50% off. The other takes 35% off everything. The 35% shop is cheaper, and the gap is bigger than it looks. Put a price on the shirt and the comparison becomes trivial. Call each shirt 100. At the first shop you pay 100 for the first and 50 for the second, so 150 for the pair. At the second shop you pay 65 for each, so 130 for the pair.
The 35% offer saves you 20 on every 150 you would have spent. The reason the first offer underperforms is that its headline percentage is attached to one item while the price you care about covers two. Half off one shirt out of two is a quarter off the pair. The advertised 50 shrinks to an effective 25 the moment you divide it across everything you are carrying to the till. This is the general trick worth carrying out of the question.
Whenever offers are worded differently, convert each one into the same thing: the total price of what you actually intend to buy. Percentages attached to different bases cannot be compared, and the wording is usually chosen so that the bigger number sits next to the smaller benefit. A few conversions worth knowing. Buy one get one free is 50% off the pair. Buy two get one free is 33% off the trio.
Buy one get one half off is 25% off the pair. Three for the price of two is the same 33%. Each of these sounds larger than the flat discount it equals. The offer also changes if you only want one shirt. Then buy one get one 50% off is worth nothing at all, while 35% off still applies. The best deal depends on the size of your basket, which is exactly what the headline is designed to make you forget.
Technique: Convert every offer to a pair price