GameHackLab[RU]
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы
    • Зарегистрироваться
    • Войти

    Типы данных

    Запланировано Прикреплена Закрыта Перенесена Базовая информация
    типытипы данныхfloatdouble4 байта
    1 Сообщения 1 Posters 313 Просмотры
    Загружаем больше сообщений
    • Сначала старые
    • Сначала новые
    • По количеству голосов
    Ответить
    • Ответить, создав новую тему
    Авторизуйтесь, чтобы ответить
    Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
    • PromisingP
      Promising
      отредактировано Promising

      В статье описаны типы данных и что это такое


      Компьютер работает со значениями, а значения могут иметь разный размер и тип, или могут иметь одинаковый размер, но разный тип.
      Все значения записываются в памяти с помощью едениц и нулей, то есть - в двоичной системе исчисления, эти еденицы называются битами (бит). В одном байте (байт) 8 бит, с помощью восьми бит, по разному их комбинируя, можно записать 256 разных разных состояний, поэтому у одного байта максимальное значение которое он может содержать это 255 (считается с нуля, вместе получается 256 состояний).

      Значения могут быть signed (может быть отрицательным) и unsigned (не может быть отрицательным), в зависимости от того что нужно программе. Их размерность от этого не меняется, лишь добавляется возможность отрицательных значений. Например у signed байта минимальное значение которое он может содержать -127, а максимальное 127.
      Что бы записать значения больше чем 255, используются несколько байт. Максимальное unsigned значение из двух байт (16 бит) составляет 65535.
      Чем больше бит использовано, тем больше можно записать, 8 байт позволяют записывать огромные объёмы данных.

      Для чисел с плавающей запятой используется похожая система, но из за того что количество состояний ограничено, появляется погрешность, эта погрешность существенна только для типа float, double использует 8 байт и его погрешность незначительна. Все типы с плавающей запятой по умолчанию signed.

      Пример погрешности float:
      При попытке записать 5.04 во float 4 байта, в итоге получим 5.039999962.

      Помните что тип определяет лишь то как будет считано, или записано значение. Для компьютера типа не существует и существуют лишь гигантские массивы двоичных данных. Можно указать компьютеру прочитать значение с середины нужного, захватив кусок от другого, и получить полную ерунду, поэтому, при отладке нужно помнить о том что определение типа это задача самого пользователя.

      При переполнении значения, например если попытаться добавить к байту в котором уже значение 255 ещё 1, происходит возвращение значения к его противоположному концу, в данном случае получится 0, если добавить 2 то получится 1 и тому подобное.

      В Cheat Engine разные типы именуются в следующем порядке:

      1. byte - 1 байт, 8 бит
      2. word - 2 байта, 16 бит
      3. dword - 4 байта, 32 бит
      4. qword - 8 байт, 64 бит

      С плавающей запятой:

      1. float - 4 байта, 32 бит
      2. double - 8 байт, 64 бит

      С помощью значений можно описать любую информацию. Если вы открывали Cheat Engine то уже могли заметить что там есть тип String, это строковый тип, который читает значения из памяти и переводит их в текст. Существует множество различных кодировок текста, для кодировки букве присваивается номер, а потом этот номер записывается как значение. При чтении строки из памяти всё происходит наоборот, читается номер и ковертируется в понятный человеку символ.
      Например слово "hello" это набор байт со значениями 104 101 108 108 111 в кодировке ASCII.
      В Cheat Engine значения могут быть отображены в десятичной, или в шестнадцатиричной системе счисления. Шестнадцатиричная система счисления имеет максимальное значение 15 (F), вместо 9, для простоты понимания, когда мы начинаем добавлять, или менять цифру в десятичной системе - начинается новый десяток, в шестнадцатиричной так-же, сначала идут значения 0 1 2 3 4 5 6 7 8 9 A B C D E F, а потом добавляется 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C..., так же как двоичная система имеет лишь 0 и 1, и 10 начинается уже после 1. 0, 1, 10, 11...

      Адреса памяти процесса обычно записываются в шестнадцатиричной системе, вам не нужно учиться считать в этих системах что бы работать с ними, главное это понимать принцип.

      1 ответ Последний ответ Ответить Цитировать 1
      • PromisingP Promising сослался на эту тему в
      • Первое сообщение
        Последнее сообщение