Ответ 1
В принципе, <<
может быть быстрее для подписанных типов, потому что он менее строго определен. n+n
определяется, когда он не переполняется, но n<<1
определяется только тогда, когда n
неотрицателен и результат не переполняется.
В действительности, компилятор будет генерировать тот же самый машинный код для обоих.