Реализация Atoi в C

Я не могу понять следующееatoi код реализации, а именно эта строка:k = (k<<3)+(k<<1)+(*p)-'0';

Код:

int my_atoi(char *p) {
    int k = 0;
    while (*p) {
        k = (k<<3)+(k<<1)+(*p)-'0';
        p++;
     }
     return k;
}

Может кто-нибудь объяснить это мне?

Другой вопрос: каким должен быть алгоритмatof реализация ?

Ответы на вопрос(5)

Ваш ответ на вопрос