2012-03-02 3 views
9

Меня всегда учили 0-9 представлять значения от нуля до девяти и A, B, C, D, E, F для 10-15.0x00000000 hexadecimal?

Я вижу этот формат 0x00000000 и не вписывается в шаблон шестнадцатеричного. Есть ли руководство или репетитор где-нибудь, что может это объяснить?

Я googled для шестнадцатеричных, но я не могу найти никаких объяснений.

Итак, мой второй вопрос: есть ли имя для формата 0x00000000?

+2

'0x0000' - это шестнадцатеричное число. «0x» указывает, что он должен быть оценен в базе 16 вместо 10. Без этого вы не знаете, является ли '15' десятичной или шестнадцатеричной (или восьмеричной). Это то, что вы хотели знать? –

+0

Есть ли название для этого конкретного формата, или я должен ввести шестнадцатеричный код в Google, надеясь, что этот формат появится? – nhat

+1

@nhat '0x' является стандартным шестнадцатеричным префиксом, он просто сообщает вам, что следующий номер будет в шестнадцатеричном формате. Поиск google не должен быть необходимым (просто возьмите то, что вы знаете об hex, и запомните этот префикс). – jzworkman

ответ

12

0x просто говорит вам номер после того, как он будет в шестнадцатеричном

так 0x00 является 0, 0х10 составляет 16, 0x11 17 и т.д.

+0

ОК, если он идет на 1, почему 0x0080 = 128? – nhat

+0

@, если он не проходит мимо, каждое место имеет коэффициент 16, поэтому для вашего случая это 8 * 16 или 128, потому что 8 находится на 16 месте. – jzworkman

+0

Я заметил 0x00000080 = 0x0080. Форматирование того, что меня сбивало с толку, но, посмотрев на это больше, начинает приобретать больше смысла. – nhat

9

0x просто префикс (используется в C и многих других языках программирования) означает, что следующее число в базе 16.

Другие обозначения, которые были использованы для шестнадцатеричной включают:

$ABCD 
ABCDh 
X'ABCD' 
"ABCD"X 
+0

классный, спасибо за информацию. Никогда не видел эти форматы раньше. Есть ли какой-то конкретный сайт, который вы узнали из этого? – nhat

+0

Я работал с * всеми * этими обозначениями, прежде чем там был даже интернет. Итак, нет конкретного веб-сайта. –

+1

lol cool спасибо! – nhat

1

шестнадцатеричная цифра s часто предваряются 0x, чтобы указать, что они шестнадцатеричные цифры. В этом случае есть 8 цифр, каждый из которых представляет 4 бита, так что это 32 бита или слово. Я предполагаю, что вы видели это в ошибке, и это адрес памяти. Это значение имеет значение null, так как шестнадцатеричное значение равно 0.

3

Все после x - шестнадцатеричные цифры (0x - только префикс для обозначения шестнадцатеричный), представляющий 32 бита (если вы были положить 0xFFFFFFFF в двоичной системе, это будет 1111 1111 1111 1111 1111 1111 1111 1111).

3

Да, это шестнадцатеричное.

в противном случае, вы не можете представить A.Компилятор для C и Java будет рассматривать его как идентификатор переменной. Добавленный префикс 0x сообщает компилятору, что это шестнадцатеричное число, поэтому:

int ten_i = 10; 
int ten_h = 0xA; 

ten_i == ten_h; // this boolean expression is true 

ведущих нулей указывают размер: 0x0080 намекает число будет храниться в два байт; и 0x00000080 представляет четыре байта. Такие обозначения часто используются для флагов: если установлен определенный бит, эта функция включена.

P.S. Как примечание вне темы: если число начинается с 0, то оно интерпретируется как восьмеричное число, например 010 == 8. Здесь 0 также является префиксом.