Как этот адрес (0x00000400) = 1024

Я работаю на C++, и у меня есть #define VAL 0x00000400. когда я устанавливаю переменную, равную определению: int value = VAL; когда я запускаю отладчик, он показывает значение переменной = 1024. Может ли кто-нибудь объяснить, как это превращается в 1024? Может быть, какие-то ссылки на информацию об адресах памяти, информацию #define или что-то важное.


person TheFuzz    schedule 07.09.2010    source источник
comment
-1 за очень простой вопрос о разнице между основанием 10 и основанием 16.   -  person Steve Townsend    schedule 08.09.2010
comment
о, я не могу представить, как люди, использующие шестнадцатеричный код, ничего об этом не знают   -  person Svisstack    schedule 08.09.2010
comment
@Steve - +1, чтобы противостоять вашему ненужному отрицательному голосу. SO — это место для вопросов, даже если они элементарные.   -  person Yuval Adam    schedule 08.09.2010
comment
@Yuwal A: я хочу видеть на НАСТОЛЬКО больше профессиональных людей, чем учебные вопросы по С++   -  person Svisstack    schedule 08.09.2010
comment
@Svisstack: поисковые системы еще недостаточно умны, чтобы выдавать полезные результаты по таким вопросам, как эти. А пока такие вопросы можно задавать здесь.   -  person casablanca    schedule 08.09.2010
comment
@Svisstack: То, что вы этого хотите, не означает, что для этого предназначен SO. SO предназначен для решения вопросов по программированию, а не только тех, которые считаются сложными или интересными. Кроме того, сложный или интересный вопрос одного программиста является учебным вопросом для другого. Всегда найдется кто-то умнее тебя.   -  person John Dibling    schedule 08.09.2010
comment
Интересно посмотреть на это туда и обратно. На самом деле я пересмотрел свой отрицательный голос, но не вижу, как отозвать его, не проголосовав за вопрос. Возможно, мне следует спросить, как это сделать на SO?   -  person Steve Townsend    schedule 08.09.2010
comment
@Steve - meta.stackexchange.com/questions/40683/. Чтобы отменить голосование, нажмите на тот же голос, на который вы нажали ранее. ... Нажатие другого голоса на самом деле не отменяет, а превращает -1 в +1 или +1 в -1.   -  person Bert F    schedule 08.09.2010
comment
Пробовал это. Я получаю всплывающее окно с сообщением, что мой голос заблокирован, если q не будет отредактирован. Значит, у меня плохая карма.   -  person Steve Townsend    schedule 08.09.2010


Ответы (7)


0x00000400 — это 16 по основанию для 1024. Ваш отладчик показывает вам целочисленное значение по основанию 10.

person GWW    schedule 07.09.2010

«0x400» — это шестнадцатеричное число или основание 16. 0x400, выраженное как десятичное число (основание 10), 1024.

Кстати, вы можете использовать Google для базовых преобразований. Найдите "0x400 in decimal", и Google выдаст вам ответ.

person John Dibling    schedule 07.09.2010
comment
Проголосовал за ссылку, в то время как главный ответ не удосужился ›_‹ - person Cheezmeister; 28.06.2011

0x00000400 — это 400 с основанием 16, то есть 1024 с основанием 10.

person Robert    schedule 07.09.2010

1024 в десятичном виде = 400 в шестнадцатеричном.

person funkymushroom    schedule 07.09.2010

0x400 — это шестнадцатеричное число (обозначается префиксом 0x). Это еще один способ представления десятичного числа 1024.

person Jonathan Grynspan    schedule 07.09.2010

Кроме того, преобразование из 0x400 (основание 16) в основание 10:

4*16^2 + 0*16^1 + 0*16^0
4*16^2 + 0 + 0
4*256
1024
person cmcginty    schedule 08.09.2010

ну, я не видел вашего кода, но 400h = 1024 десятичного числа, и вы указываете целое число 'int value = VAL' компилятор просто не отображает никаких уведомлений/предупреждений, он делает приведение для вас

person john    schedule 07.09.2010
comment
Я имею в виду, что это делает преобразование... неявно - person john; 08.09.2010