Професионална програма
Loading...
ValentinV avatar ValentinV 2 Точки

Binary to Decimal (Loops Homework)

Опитвам се да реша 13 задача от домашното Loops от курса Programming Basics, и попаднах на едно решение което не разбирам напълно.

По точно не разбирам следния ред: int number = binNumber[i] - '0';

Тук е целия код.

Как от integer вадиш char, и каква точно е функцията на този код. 

Благодаря за помощта!

Тагове:
0
Programming Basics 03/03/2016 15:55:37
Filkolev avatar Filkolev 4486 Точки
Best Answer

binNumber е низ, което значи, че елементите му са символи. Т.е. binNumber[i] е символ. От символ вадиш символ, което е напълно нормално, понеже символите са числов тип данни.

Един символ, когато се разглежда като число, приема стойността на номера си в ASCII таблицата. Символът '0' като число е 48, символът '1' е 49 и т.н. Фактът, че символите са последователни в таблицата ти позволява да превърнеш например символът '1' в числото 1 като от '1' (49) извадиш 48 ('0'). Стига полученият символ да е действително цифра, формулата ще е коректна.

Друго полезно свойство, което произтича от това, е че може лесно да провериш дали даден символ е цифра (има метод, char.IsDigit(), но може и с доста проста проверка) - if (symbol >= '0' && symbol <= '9' ) // digit

2