Я работаю на C++, и у меня есть #define VAL 0x00000400
. когда я устанавливаю переменную, равную определению: int value = VAL; когда я запускаю отладчик, он показывает значение переменной = 1024. Может ли кто-нибудь объяснить, как это превращается в 1024? Может быть, какие-то ссылки на информацию об адресах памяти, информацию #define или что-то важное.
Как этот адрес (0x00000400) = 1024
Ответы (7)
0x00000400 — это 16 по основанию для 1024. Ваш отладчик показывает вам целочисленное значение по основанию 10.
«0x400» — это шестнадцатеричное число или основание 16. 0x400, выраженное как десятичное число (основание 10), 1024.
Кстати, вы можете использовать Google для базовых преобразований. Найдите "0x400 in decimal", и Google выдаст вам ответ.
0x00000400 — это 400 с основанием 16, то есть 1024 с основанием 10.
1024 в десятичном виде = 400 в шестнадцатеричном.
0x400
— это шестнадцатеричное число (обозначается префиксом 0x
). Это еще один способ представления десятичного числа 1024
.
Кроме того, преобразование из 0x400 (основание 16) в основание 10:
4*16^2 + 0*16^1 + 0*16^0
4*16^2 + 0 + 0
4*256
1024
ну, я не видел вашего кода, но 400h = 1024 десятичного числа, и вы указываете целое число 'int value = VAL' компилятор просто не отображает никаких уведомлений/предупреждений, он делает приведение для вас