Форум программистов, компьютерный форум CyberForum.ru

как понять значение кода с++ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
13.12.2013, 16:25     как понять значение кода с++ #1
Доброго времени суток.
Нашел такой код с++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 // таблица замен
 byte Tab_Z[8][16] =
 {
  0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF,
  0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF,
  0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF,
  0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF,
  0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF,
  0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF,
  0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF,
  0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF
 };
// ключик
 unsigned long key[8] =
 {
  0x0123,
  0x4567,
  0x89AB,
  0xCDEF,
  0x0123,
  0x4567,
  0x89AB,
  0xCDEF
 };
Как расшифровать значения в таблице замен? это шестнадцатиричная кодировка? есть таблица по которой можно посмотреть чему равны данные значения в десятичном коде? или метод перевода?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Doksim
 Аватар для Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
13.12.2013, 16:28     как понять значение кода с++ #2
http://vestikinc.narod.ru/AB/hex_dec_tr.htm
Matan!
13 / 13 / 1
Регистрация: 31.05.2013
Сообщений: 208
Записей в блоге: 1
Завершенные тесты: 1
13.12.2013, 16:43     как понять значение кода с++ #3
Это адреса памяти.
Да,это 16-ричная система.

Добавлено через 1 минуту
Цитата Сообщение от Doksim Посмотреть сообщение
Э,брат,не всё так просто.Переводить надо только то,что стоит после значка х
Поскольку вид чисел 0х......... указывает на 16-ричную систему счисления.

Добавлено через 1 минуту
А так по идее,всё просто:
11=А,
12=B,
13=C,
14=D,
15=E,
16=F
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.12.2013, 16:45     как понять значение кода с++ #4
Что тут, собственно, переводить? В таблице, в каждой строке, числа от 0 до 15. Ключи, в десятичном виде, можно увидеть, если вывести на консоль массив key через cout <<.
Миниатюры
как понять значение кода с++  
Doksim
 Аватар для Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
13.12.2013, 16:45     как понять значение кода с++ #5
Цитата Сообщение от Matan! Посмотреть сообщение
Э,брат,не всё так просто.Переводить надо только то,что стоит после значка х
Поскольку вид чисел 0х......... указывает на 16-ричную систему счисления.
это продразумевается.
Matan!
13 / 13 / 1
Регистрация: 31.05.2013
Сообщений: 208
Записей в блоге: 1
Завершенные тесты: 1
13.12.2013, 16:47     как понять значение кода с++ #6
А так всё просто:
11=A
12=B
13=C
14=D
15=E
16=F
Дальше повтор:
17=A1
...
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
13.12.2013, 16:49     как понять значение кода с++ #7
Цитата Сообщение от Matan! Посмотреть сообщение
Это адреса памяти.
это?
Цитата Сообщение от lexflax Посмотреть сообщение
0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF,
или это?
Цитата Сообщение от lexflax Посмотреть сообщение
0x0123,
это в какой системе?
там же ясно написано
Цитата Сообщение от lexflax Посмотреть сообщение
key[8]
ключ
Цитата Сообщение от lexflax Посмотреть сообщение
// таблица замен
Цитата Сообщение от lexflax Посмотреть сообщение
есть таблица по которой можно посмотреть чему равны данные значения в десятичном коде? или метод перевода?
не поверишь есть
Калькулятор в виндовс называется
а вообще учи
до шестнадцати на память должен знать и двоичку и шеснадцетеричку
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.12.2013, 16:50     как понять значение кода с++ #8
Цитата Сообщение от lexflax Посмотреть сообщение
Как расшифровать значения в таблице замен?
Ни как, так как они не зашифрованы.
Цитата Сообщение от lexflax Посмотреть сообщение
это шестнадцатиричная кодировка?
Нет. Кодировка - это представление символов в файле, а здесь уже готовые цифры.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
13.12.2013, 16:52     как понять значение кода с++ #9
Цитата Сообщение от Matan! Посмотреть сообщение
Дальше повтор:
17=A1
серьезно
а не 0х11?
Цитата Сообщение от Matan! Посмотреть сообщение
11=A
12=B
13=C
14=D
15=E
16=F
вычти 1 получишь правильный ответ
интересно а 10(в десятичке) в твоей кодировке как представляется
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.12.2013, 16:53     как понять значение кода с++ #10
Цитата Сообщение от Matan! Посмотреть сообщение
16=F
Цитата Сообщение от Matan! Посмотреть сообщение
16=F
Бред несёшь. В 16-чной системе цфры до 15-ти, а не 16-ти, так как начинаются с 0, как десятичные. A==10, B==11, C==12, D==13, E==14, F==15.

Добавлено через 1 минуту
Цитата Сообщение от Matan! Посмотреть сообщение
17=A1
A1==161.
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
13.12.2013, 17:01  [ТС]     как понять значение кода с++ #11
Цитата Сообщение от Matan! Посмотреть сообщение
Это адреса памяти.
Да,это 16-ричная система.
А как понять адреса? точнее как адрес можно использовать в программе и оперировать им? С помощью адреса можно узнать какое значение хранится в нем? и какие еще операции можно проводить с адресом памяти?
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.12.2013, 17:04     как понять значение кода с++ #12
Цитата Сообщение от lexflax Посмотреть сообщение
С помощью адреса можно узнать какое значение хранится в нем?
Можно. Но не с помощью одно лишь адреса, надо ещё разыменовать указатель, значением которого он является. Оператор разыменования - унарная звёздочка.
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
13.12.2013, 17:06  [ТС]     как понять значение кода с++ #13
Цитата Сообщение от taras atavin Посмотреть сообщение
Можно. Но не с помощью одно лишь адреса, надо ещё разыменовать указатель, значением которого он является. Оператор разыменования - унарная звёздочка.
а можно маленький но простой пример? где наглядно было плюсы и действия которые произвелись?
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.12.2013, 17:18     как понять значение кода с++ #14
Только для однозадачных систем:
C++
1
2
3
int *a; //декларируем указатель.
a=0x3a4be; // Записываем в указатель адрес, можно взять и из другого данного.
std::cout<<*a; // Выводим данное по адресу 0x3a4be.
,
C++
1
std::cout<<*((int *)(a)); // Выводим данное по адресу, равному значению данного по имени a.
.

Добавлено через 53 секунды
В многозадачных системах есть одна особенность: произвольно присвоенный адрес может быть не действителен, то есть по такому адресу может вообще не быть памяти.
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
13.12.2013, 17:21  [ТС]     как понять значение кода с++ #15
Цитата Сообщение от taras atavin Посмотреть сообщение
В многозадачных системах есть одна особенность: произвольно присвоенный адрес может быть не действителен, то есть по такому адресу может вообще не быть памяти.
И как тогда в таких случаях поступают? как вообще можно узнать какой адрес можно присваивать переменной? вдруг этот адрес уже занят другим значением, или как вы сказали данному адресу не выделена память..
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.12.2013, 17:30     как понять значение кода с++ #16
Тут почитайте о проблемах: Как инициализировать указатель произвольным адресом?
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.12.2013, 17:55     как понять значение кода с++ #17
Цитата Сообщение от lexflax Посмотреть сообщение
И как тогда в таких случаях поступают?
Адрес должна дать система:
C++
1
a=new int;
,
C++
1
a=new int [n];
,
C++
1
a=&b;
. Или же его следует вычислить на основе другого адреса только в пределах массива, или скопировать с другого указателя.

Добавлено через 2 минуты
Цитата Сообщение от lexflax Посмотреть сообщение
вдруг этот адрес уже занят другим значением,
Так тоже может быть, но тогда адрес действителен и его можно читать/писать. Только запись по этому адресу изменит значение той переменной, которая там уже валяется. Хуже, если по адресу вообще нет памяти, тогда попытка обратиться к нему крашит прогу на месте.
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
13.12.2013, 18:12  [ТС]     как понять значение кода с++ #18
а один адрес не может содержать несколько разных переменных с разными значениями?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2013, 18:16     как понять значение кода с++
Еще ссылки по теме:

Стек на основе массива структур - эт как понять читаю литературу и не могу понять! C++
C++ Не могу понять 2 строки кода функции из методички
Замена кода символа на его значение C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.12.2013, 18:16     как понять значение кода с++ #19
Нет если только он не в разных адресных пространствах. Но разные пространства - это для разных экземпляров, или вообще разных приложений. В крайнем случае для самого менеджера памяти.
Yandex
Объявления
13.12.2013, 18:16     как понять значение кода с++
Ответ Создать тему
Опции темы

Текущее время: 19:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru