ну или 1+15, тоже бывает. WCHAR макросом называется, иногда просто char, так вот биты данных и знаковый бит-разные вещи, это только для вас, программистов без разницы, что 0-255 что -127 - 127, а для железа там и перенос при битовых сдвигах разный и еще куча всего, как меня зхаебало с тупыми дибилами спорить, а. купите книжку по ассемблеру, а потом удивляются, откуда у них данные поехали, ведь они применяли побитовый сдвиг на знаковых типах, и да, вставки asm в c++ еще не отменили
Заполнять биты при сдвиге можно нулём, единицей или знаком.