На самом деле, базовое уравнение работает только для символов ASCII в кодировке ASCII или UTF-8; один байт на символ. Для UTF-16 эти же символы будут кодироваться как 2 байта каждый, а в UTF-32 - 4 байта каждый. Это имеет значение, в зависимости от языка программирования и времени выполнения; Строки .NET хранятся и кодируются в UTF-16.
Итак, это на самом деле (log (N) + 1) * sizeof (char)