Основы программирования. Представление данных в памяти

Содержание

Слайд 2

JAVA. ЦЕЛОЧИСЛЕННЫЕ ТИПЫ 1111 1111 + 0000 0001 1 0000 0000

JAVA. ЦЕЛОЧИСЛЕННЫЕ ТИПЫ

1111 1111
+ 0000 0001

1 0000 0000

Все

целочисленные типы Java хранят числа в дополнительном коде!
Слайд 3

JAVA. ПРЕДСТАВЛЕНИЕ ОТРИЦАТЕЛЬНЫХ ЧИСЕЛ Старший (знаковый) бит числа определяет его знак.

JAVA. ПРЕДСТАВЛЕНИЕ ОТРИЦАТЕЛЬНЫХ ЧИСЕЛ

Старший (знаковый) бит числа определяет его знак. Если

он равен 0, число положительное, если 1, то отрицательное.

Прямой код:

78 = 10011102

– 78 = –10011102

≥ 0

< 0

операции с положительными и отрицательными числами выполняются по-разному!

Слайд 4

JAVA. ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ Идея: «– 1» должно быть представлено

JAVA. ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ

Идея: «– 1» должно быть представлено так,

чтобы при сложении с числом «1» получить 0.

1111 1111
+ 0000 0001

1 0000 0000

-1 → 255
1
256

Для 8-битных чисел: код числа «–X» равен двоичному коду числа 256 – X (дополнение до 256).

Слайд 5

JAVA. КАК ПОСТРОИТЬ ДОПОЛНИТЕЛЬНЫЙ КОД Алгоритм А0: перевести число 2K –

JAVA. КАК ПОСТРОИТЬ ДОПОЛНИТЕЛЬНЫЙ КОД

Алгоритм А0: перевести число 2K – X

в двоичную систему счисления.

для вычислений требуется K+1 разряд

Алгоритм А1:
перевести число X в двоичную систему счисления;
построить обратный код, выполнив инверсию всех битов (заменить 0 на 1 и наоборот);
к результату добавить 1.

78 = 010011102

10110001

-78 → 10110010

← инверсия

+1

Слайд 6

JAVA. КАК ПОСТРОИТЬ ДОПОЛНИТЕЛЬНЫЙ КОД Алгоритм А2: перевести число X-1 в

JAVA. КАК ПОСТРОИТЬ ДОПОЛНИТЕЛЬНЫЙ КОД

Алгоритм А2:
перевести число X-1 в двоичную

систему счисления;
выполнить инверсию всех битов.

78 - 1 = 77 = 010011012

← инверсия

Алгоритм А3:
перевести число X в двоичную систему счисления;
выполнить инверсию всех старших битов числа, кроме младшей единицы и нулей после нее.

78 = 010011102

-78 → 10110010

-78 → 10110010

← инверсия

Слайд 7

JAVA. ПРЕДСТАВЛЕНИЕ ВЕЩЕСТВЕННЫХ ЧИСЕЛ С фиксированной запятой (в первых ЭВМ): для

JAVA. ПРЕДСТАВЛЕНИЕ ВЕЩЕСТВЕННЫХ ЧИСЕЛ

С фиксированной запятой (в первых ЭВМ):

для больших и

маленьких чисел нужно масштабирование

0,000000000000012345

123450000000000000,0

С плавающей запятой (автоматическое масштабирование):

положение
запятой

цифры числа

1,2345·10-14

1,2345·1017

Слайд 8

JAVA. ПРЕДСТАВЛЕНИЕ ВЕЩЕСТВЕННЫХ ЧИСЕЛ Теоретически оптимальный вариант (целая часть = 0):

JAVA. ПРЕДСТАВЛЕНИЕ ВЕЩЕСТВЕННЫХ ЧИСЕЛ

Теоретически оптимальный вариант (целая часть = 0):

0,0012345 =

0,12345·10-2

12,345 = 0,12345·102

всегда 0

один разряд расходуется впустую!

Экономный вариант (целая часть от 1 до B):

основание системы счисления

0,0012345 = 1,2345·10-3

12,345 = 1,2345·101

повышение точности при конечном числе разрядов

Слайд 9

JAVA. НОРМАЛИЗАЦИЯ Пример: 17,25 = 10001,012 = 1,0001012·24 5,375 = 7,625

JAVA. НОРМАЛИЗАЦИЯ

Пример:

17,25 = 10001,012 = 1,0001012·24

5,375 =

7,625 =

27,875 =

13,5 =

0,125 =

всегда

1, её можно не хранить в памяти!

Нормализованная форма: значащая часть Z удовлетворяет условию 1 ≤ Z < B, где B – основание системы счисления (стандарт IEEE 754).

Слайд 10

JAVA. ЧИСЛО ОБЫЧНОЙ ТОЧНОСТИ (SINGLE) -17,25 = -10001,012 = -1,0001012·24 single:

JAVA. ЧИСЛО ОБЫЧНОЙ ТОЧНОСТИ (SINGLE)

-17,25 = -10001,012 = -1,0001012·24

single: 4 байта

= 32 бита

мантисса = дробная часть Z

порядок со смещением

знак

p = 4 + 127 = 131 = 100000112

С

1

8

A

0

0

0

0

для single

порядок со смещением был придуман, чтобы избавиться от хранения знака порядка

Слайд 11

JAVA. НОРМАЛИЗАЦИЯ Пример: 17,25 = 10001,012 = 1,0001012·24 5,375 = 7,625

JAVA. НОРМАЛИЗАЦИЯ

Пример:

17,25 = 10001,012 = 1,0001012·24

5,375 =

7,625 =

27,875 =

13,5 =

0,125 =

всегда

1, её можно не хранить в памяти!

Нормализованная форма: значащая часть Z удовлетворяет условию 1 ≤ Z < B, где B – основание системы счисления (стандарт IEEE 754).

Слайд 12

ПРИМЕР Представим число -25,625 в машинном виде с использованием 4 байтового

ПРИМЕР

Представим число -25,625 в машинном виде с использованием 4 байтового представления

(где
1 бит отводится под знак числа, 8 бит - под смещённый порядок, остальные биты - под мантиссу).
1. 2510=1000112 0,62510=0,1012-25,62510= -100011,1012
2. -100011,1012= -1,000111012 * 24
3. СП = 127 + 4 = 131 = 1000011
4. Результат:
Слайд 13

JAVA. ДИАПАЗОН ВЕЩЕСТВЕННЫХ ЧИСЕЛ Extended – тип для вычислений в сопроцессоре,

JAVA. ДИАПАЗОН ВЕЩЕСТВЕННЫХ ЧИСЕЛ

Extended – тип для вычислений в сопроцессоре, единица

в значащей части не скрывается.

Single, double – только для хранения.

Слайд 14

JAVA. ПРИВЕДЕНИЕ ПРИМИТИВНЫХ ТИПОВ Если в выражении участвуют операнды разных типов,

JAVA. ПРИВЕДЕНИЕ ПРИМИТИВНЫХ ТИПОВ

Если в выражении участвуют операнды разных типов, происходит

их приведение.
Приведение в большую сторону происходит автоматически, в меньшую нужно делать вручную!

double z = 5;
Целое 5 при присваивании будет преобразовано в double

int x = 3 / 1.5; //НЕВЕРНО!
не скомпилируется, нужно приводить типы явно:
int x = (int)(3 / 1.5);
Правильно возвести 100 миллионов в квадрат можно так:
int x = 100 * 1000 * 1000;
out.println((long)x * x);
Достаточно при этом привести к типу long один из множителей.

Слайд 15

ПРАКТИКА – СИСТЕМЫ СЧИСЛЕНИЯ – графическая информация (0, 0, 0) (255,

ПРАКТИКА – СИСТЕМЫ СЧИСЛЕНИЯ – графическая информация

(0, 0, 0)

(255, 255, 255)

(255,

0, 0)

(0, 255, 0)

(255, 255, 0)

(0, 0, 255)

(255, 150, 150)

(100, 0, 0)

256·256·256 = 16 777 216 (True Color, «истинный цвет»)

Слайд 16

ПРАКТИКА – СИСТЕМЫ СЧИСЛЕНИЯ – графическая информация Программисты чаще пользуются шестнадцатеричной

ПРАКТИКА – СИСТЕМЫ СЧИСЛЕНИЯ – графическая информация

Программисты чаще пользуются шестнадцатеричной системой

счисления!

(255, 255, 0) → #FFFF00

Слайд 17

ПРАКТИКА. ОФОРМЛЕНИЕ АНДРОИД ПРОГРАММ Оформление программ хранится в разделе ресурсов и

ПРАКТИКА. ОФОРМЛЕНИЕ АНДРОИД ПРОГРАММ

Оформление программ хранится в разделе ресурсов и помещается

в XML-файл

Идея проста: не указывать в программе конкретный цвет или размер, а описать его в файле ресурсов, присвоив ему идентификатор, а дальше использовать именно этот идентификатор (ID). Это дает возможность изменять внешний вид программы без изменения программного кода. Обычно для цветовых ресурсов используют файл colors.xml в подкаталоге /res/values.

Слайд 18

ПРАКТИКА. ОФОРМЛЕНИЕ АНДРОИД ПРОГРАММ Обычно для цветовых ресурсов используют файл colors.xml

ПРАКТИКА. ОФОРМЛЕНИЕ АНДРОИД ПРОГРАММ

Обычно для цветовых ресурсов используют файл colors.xml в

подкаталоге /res/values. Но можно использовать любое произвольное имя файла, или даже вставить их в файл вместе со строковыми ресурсами strings.xml.

Задание 1
Создайте файл colors.xml в подкаталоге /res/values
и переключитесь к текстовому виду

Слайд 19

ПРАКТИКА. ОФОРМЛЕНИЕ АНДРОИД ПРОГРАММ Для работы с цветом используется тег ,

ПРАКТИКА. ОФОРМЛЕНИЕ АНДРОИД ПРОГРАММ

Для работы с цветом используется тег , а

цвет указывается в специальных значениях.
#RGB;
#RRGGBB;
#ARGB;
#AARRGGBB;
A – это альфа-канал величина обратная прозрачности. То есть цвет #4000FF00 это почти прозрачный зеленый.
Определенные таким образом цвета можно использовать в других частях кода и xml-файлах
Задание 2
Напишите в файле colors.xml



#f00
#FFFF00
#4000FF00

Слайд 20

ПРАКТИКА. ФАЙЛ РАЗМЕТКИ ОСНОВНОЙ АКТИВНОСТИ Откройте файл разметки основной активности res

ПРАКТИКА. ФАЙЛ РАЗМЕТКИ ОСНОВНОЙ АКТИВНОСТИ

Откройте файл разметки основной активности res ⇒

layout ⇒ activity_main.xml (там описываются элементы главного окна приложения), переключитесь к текстовому виду (вкладка внизу activity_main.xml)
LinearLayout – все окно, EditText – поле ввода, TextView – основное поле вывода и
Button – кнопка закрытия, которая возникает после окончания работы запущенной консольной программы.
Задание 3 задайте цвет основному полю ввода consoleWrite

android:id="@+id/consoleWrite"
android:layout_width="match_parent"
android:gravity="top"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@color/yellow" />

Цвет фона

Ссылка на ресурс в собственном пакете

Запустите приложение на планшете

Слайд 21

ПРАКТИКА. ФАЙЛ РАЗМЕТКИ ОСНОВНОЙ АКТИВНОСТИ Можете попробовать добавить различным элементам разметки

ПРАКТИКА. ФАЙЛ РАЗМЕТКИ ОСНОВНОЙ АКТИВНОСТИ

Можете попробовать добавить различным элементам разметки кроме

android:background
свойства
android:textColor и
android:TextColorHint (это свойство применяется, когда в поле ввода еще нет текста пользователя и там отображается подсказка).
Разные элементы поддерживают разные свойства, надо уточнять по документации.
Также существуют предопределенные названия цветов. Такие ID доступны в пространстве имен android.R.соlor.
Посмотреть цветовые значения цветов можно в документации
http://developer.android.com/reference/android/R.color.html
Для ссылки на системный ресурс мы должны, например, записать: android:textСolor="@android:color/black"
Слайд 22

САМОСТОЯТЕЛЬНАЯ РАБОТА Задайте фону приложения фиолетовый цвет Задайте желтый цвет текста

САМОСТОЯТЕЛЬНАЯ РАБОТА

Задайте фону приложения фиолетовый цвет
Задайте желтый цвет текста
В приложении

TestBed вставьте фрагмент кода, посмотрите на результат

Float f = new Float("124.32432");
int intBits = Float.floatToIntBits(f);
String binary = Integer.toBinaryString(intBits);
out.println("Binary = " + binary);

4) Используя следующие закономерности:
int sign = intBits & 0x80000000;
int exponent = intBits & 0x7f800000;
int mantissa = intBits & 0x007fffff;
Посмотрите как представлена порядок и мантисса в памяти компьютера для любого числа
5) Исправьте программу так, чтобы она отображала тип Double в двоичном виде

Слайд 23

Домашнее задание Повторить занятия 1,2,3 по материалам уроков в дистанционной системе

Домашнее задание
Повторить занятия 1,2,3 по материалам уроков в дистанционной системе

обучения
IT ШКОЛА SAMSUNG / Модуль 1. Основы программирования (Java) /
/Учебные материалы 1.1-1.3