11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
1

Нужны комментарии к коду

13.12.2013, 16:25. Показов 5312. Ответов 18
Метки нет (Все метки)

Доброго времени суток.
Нашел такой код с++
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
 };
Как расшифровать значения в таблице замен? это шестнадцатиричная кодировка? есть таблица по которой можно посмотреть чему равны данные значения в десятичном коде? или метод перевода?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2013, 16:25
Ответы с готовыми решениями:

Нужны комментарии к коду
#include<iostream.h> #include<math.h> int maximal(int n,double R0); void main(){ int...

Нужны комментарии к коду
что здесь происходить double *x=new double ; double **b=new double *; for(i=0;i<n;i++) ...

Нужны комментарии к коду
меня интересуют вот эти три строки ,что они делают в данном коде.какой их тут смысл. C.pSet =...

Нужны комментарии к коду
pair<bool, array<int, 81>> SOL(const char* inp) { array<int, 81> ANS; int* TAB = ANS.data();...

18
57 / 57 / 10
Регистрация: 08.12.2013
Сообщений: 257
13.12.2013, 16:28 2
http://vestikinc.narod.ru/AB/hex_dec_tr.htm
1
Модератор
1436 / 1011 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
13.12.2013, 16:43 3
Это адреса памяти.
Да,это 16-ричная система.

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

Добавлено через 1 минуту
А так по идее,всё просто:
11=А,
12=B,
13=C,
14=D,
15=E,
16=F
0
5489 / 4884 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
13.12.2013, 16:45 4
Что тут, собственно, переводить? В таблице, в каждой строке, числа от 0 до 15. Ключи, в десятичном виде, можно увидеть, если вывести на консоль массив key через cout <<.
Миниатюры
Нужны комментарии к коду  
0
57 / 57 / 10
Регистрация: 08.12.2013
Сообщений: 257
13.12.2013, 16:45 5
Цитата Сообщение от Matan! Посмотреть сообщение
Э,брат,не всё так просто.Переводить надо только то,что стоит после значка х
Поскольку вид чисел 0х......... указывает на 16-ричную систему счисления.
это продразумевается.
0
Модератор
1436 / 1011 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
13.12.2013, 16:47 6
А так всё просто:
11=A
12=B
13=C
14=D
15=E
16=F
Дальше повтор:
17=A1
...
0
Модератор
Эксперт по электронике
8737 / 6527 / 887
Регистрация: 14.02.2011
Сообщений: 22,850
13.12.2013, 16:49 7
Цитата Сообщение от Matan! Посмотреть сообщение
Это адреса памяти.
это?
Цитата Сообщение от lexflax Посмотреть сообщение
0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0x C,0xD,0xE,0xF,
или это?
Цитата Сообщение от lexflax Посмотреть сообщение
0x0123,
это в какой системе?
там же ясно написано
Цитата Сообщение от lexflax Посмотреть сообщение
key[8]
ключ
Цитата Сообщение от lexflax Посмотреть сообщение
// таблица замен
Цитата Сообщение от lexflax Посмотреть сообщение
есть таблица по которой можно посмотреть чему равны данные значения в десятичном коде? или метод перевода?
не поверишь есть
Калькулятор в виндовс называется
а вообще учи
до шестнадцати на память должен знать и двоичку и шеснадцетеричку
0
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
13.12.2013, 16:50 8
Цитата Сообщение от lexflax Посмотреть сообщение
Как расшифровать значения в таблице замен?
Ни как, так как они не зашифрованы.
Цитата Сообщение от lexflax Посмотреть сообщение
это шестнадцатиричная кодировка?
Нет. Кодировка - это представление символов в файле, а здесь уже готовые цифры.
0
Модератор
Эксперт по электронике
8737 / 6527 / 887
Регистрация: 14.02.2011
Сообщений: 22,850
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(в десятичке) в твоей кодировке как представляется
1
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
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.
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
13.12.2013, 17:01  [ТС] 11
Цитата Сообщение от Matan! Посмотреть сообщение
Это адреса памяти.
Да,это 16-ричная система.
А как понять адреса? точнее как адрес можно использовать в программе и оперировать им? С помощью адреса можно узнать какое значение хранится в нем? и какие еще операции можно проводить с адресом памяти?
0
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
13.12.2013, 17:04 12
Цитата Сообщение от lexflax Посмотреть сообщение
С помощью адреса можно узнать какое значение хранится в нем?
Можно. Но не с помощью одно лишь адреса, надо ещё разыменовать указатель, значением которого он является. Оператор разыменования - унарная звёздочка.
1
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
13.12.2013, 17:06  [ТС] 13
Цитата Сообщение от taras atavin Посмотреть сообщение
Можно. Но не с помощью одно лишь адреса, надо ещё разыменовать указатель, значением которого он является. Оператор разыменования - унарная звёздочка.
а можно маленький но простой пример? где наглядно было плюсы и действия которые произвелись?
0
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
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 секунды
В многозадачных системах есть одна особенность: произвольно присвоенный адрес может быть не действителен, то есть по такому адресу может вообще не быть памяти.
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
13.12.2013, 17:21  [ТС] 15
Цитата Сообщение от taras atavin Посмотреть сообщение
В многозадачных системах есть одна особенность: произвольно присвоенный адрес может быть не действителен, то есть по такому адресу может вообще не быть памяти.
И как тогда в таких случаях поступают? как вообще можно узнать какой адрес можно присваивать переменной? вдруг этот адрес уже занят другим значением, или как вы сказали данному адресу не выделена память..
0
5489 / 4884 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
13.12.2013, 17:30 16
Тут почитайте о проблемах: Как инициализировать указатель произвольным адресом?
0
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
13.12.2013, 17:55 17
Цитата Сообщение от lexflax Посмотреть сообщение
И как тогда в таких случаях поступают?
Адрес должна дать система:
C++
1
a=new int;
,
C++
1
a=new int [n];
,
C++
1
a=&b;
. Или же его следует вычислить на основе другого адреса только в пределах массива, или скопировать с другого указателя.

Добавлено через 2 минуты
Цитата Сообщение от lexflax Посмотреть сообщение
вдруг этот адрес уже занят другим значением,
Так тоже может быть, но тогда адрес действителен и его можно читать/писать. Только запись по этому адресу изменит значение той переменной, которая там уже валяется. Хуже, если по адресу вообще нет памяти, тогда попытка обратиться к нему крашит прогу на месте.
1
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
13.12.2013, 18:12  [ТС] 18
а один адрес не может содержать несколько разных переменных с разными значениями?
0
4201 / 1793 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
13.12.2013, 18:16 19
Нет если только он не в разных адресных пространствах. Но разные пространства - это для разных экземпляров, или вообще разных приложений. В крайнем случае для самого менеджера памяти.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2013, 18:16
Помогаю со студенческими работами здесь

Нужны комментарии к коду
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; //ЗАДАЧА #14 void...

Нужны комментарии к коду
int bestStr(char** file, int numstr) { int iBest = -1, bestwords = 0; for (int i = 0; i &lt;...

Нужны комментарии к коду
#include &lt;iostream&gt; using namespace std; int main() { int n, m, sum = 1, max, t; cin...

Нужны комментарии к коду
Не могу понять что тут происходит, можете построчно объяснить? Stack* MaxStack(Stack* beg)...

Нужны комментарии к коду
помогите пожалуйста что и как он делает, вижу только конечный результат но хочу разобраться...

Нужны комментарии к коду
если можно расписать каждое действие #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; using namespace...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru