10001100₂ = 0*2⁰ + 0*2¹ + 1*2² + 1*2³ + 0*2⁴ + 0*2⁵ + 0*2⁶ + 1*2⁷ = 140₁₀
140₁₀ = 4*8⁰ + 1*8¹ + 2*8² = 214₈
140₁₀ = 12*16⁰ + 8*16¹ = 8C₁₆
253₈ = 3*8⁰ + 5*8¹ + 2*8² = 171₁₀
171₁₀ = 1*2⁰ + 1*2¹ + 0*2² + 1*2³ + 0*2⁴ + 1*2⁵ + 0*2⁶ + 1*2⁷ = 10101011₂
171₁₀ = 11*16⁰ + 10*16¹ = AB₁₆
154₁₀ = 0*2⁰ + 1*2¹ + 0*2² + 1*2³ + 1*2⁴ + 0*2⁵ + 0*2⁶ + 1*2⁷ = 10011010₂
154₁₀ = 2*8⁰ + 3*8¹ + 2*8² = 232₈
154₁₀ = 10*16⁰ + 9*16¹ = 9A₁₆
7B₁₆ = B*16⁰ + 7*16¹ = 123₁₀
123₁₀ = 1*2⁰ + 1*2¹ + 0*2² + 1*2³ + 1*2⁴ + 1*2⁵ + 1*2⁶ = 1111011₂
123₁₀ = 3*8⁰ + 7*8¹ + 1*8² = 173₈
Кстати, о типе переменных. Существуют разные классификации, но для понимания самой концепции типов непринципиально, какой классификацией пользоваться.
Если говорить упрощенно, можно различать числовые и нечисловые данные. С числовыми можно совершать математические операции, а нечисловые можно только вводить в компьютер (например, с клавиатуры) и выводить из компьютера во внешнюю среду (например, отображать на мониторе). И вот тут самое интересное. Перед тем, как компьютер получит числовое данное, оно должно быть введено в форме нечислового. Тут-то и возникает неявное преобразование типов. Когда мы, к примеру, вводим число 25, то нажимаем клавиши "2" и "5", посылая компьютеру определенные коды. Компьютер преобразует их и получает последовательность символов "25". Это то же, что число 25? Если мы пишем 25 на бумаге, то для нас оно хоть число, хоть текст, изображающий число. А для компьютера это не так. Его система команд обрабатывает символы отдельно, числа отдельно. И хранит компьютер число 25 и символы "25" совсем по-разному. Вот поэтому мы должны описывая переменные, сообщать не только их имена, но и тип - чтобы транслятор "понял", как эти данные ему обрабатывать. Даже числовые данные неоднородны - компьютер может хранить их с разным представлением (целые, с фиксированной точкой, с плавающей точкой) и с разной разрядностью (максимальным числом цифр). И, встретив в операции два числа разного типа, транслятор должен привести их к одному - это тоже случай неявного приведения типов. Например, оно возникнет при вычислении выражения 2.5+1, потому что первое значение дробное, а второе - целое. Транслятор приведет его к 2.5+1.0.
Описание переменной должно быть сделано до её первого использования в программе. Обычно стараются вынести все описания в начало программы - при изучении текста чужой программы так легче найти нужное описание. Это характерно для "классических" языков программирования типа Pascal.
Описание переменных в этом языке делается в разделе, который начинается ключевым словом var (от английского слова variable - переменная).
Альтернативой является описание в месте, непосредственно предшествующем первому использованию переменной - это облегчает первичное написание программы, когда заранее сложно сказать, какие переменные понадобятся - особенно этим любят пользоваться программисты на языках С/С++, хотя и в этом языке есть возможность описать переменные в начале программы.
Примеры описания одних и тех же переменных:
a) Pascal
var
a:integer;
b1, b134, delta: real;
weight: array[1..n] of integer;
б) С/С++
int a;
single b1, b134, delta;
int weight[n+1];
в) BASIC
DIM a AS INTEGER
DIM b1 AS REAL, b134 AS REAL, delta AS REAL
DIM weight(1 To N) AS INTEGER