SlideShare a Scribd company logo
ПИФАГОР
(570 – 500 лет до нашей эры)
«ВСЕ ЕСТЬ
ЧИСЛО»
Системы счисления
Системы счисления
Система счисления — это способ
записи (представления) чисел.
Пример систем счисления
Представьте вы видите перед собой
несколько деревьев. Ваша задача — их
посчитать. Для этого можно — загибать
пальцы, делать зарубки на камне (одно
дерево — один палецзарубка) или
сопоставить 10 деревьям какой-нибудь
предмет, например, камень, а
единичному экземпляру — палочку и
выкладывать их на землю по мере
подсчёта.
Двенадцатеричная система счисления
Широкое применение до XX века имела
двенадцатеричная система счисления, которую мы до
сих пор можем увидеть в часах, календарных месяцах и
т.д.
В её основе лежит счёт фаланг палецев.
Современные системы счисления
Десятичная система счисления
Появилась впервые в VII веке нашей эры.
Используются арабские цифры. Основана на
количестве пальцев на руках.
Двоичная система счисления
Эта система, в основном, используется
в вычислительной
технике.
Она была создана за
долго до изобретения вычислительных
машин и уходит “корнями” в цивилизацию
Инков, где использовались кипу — сложные
верёвочные сплетения и узелки.
Двоичная система счисления
Двоичная система
00001011
Двоичная (позиционная) система
счисления имеет основание 2 и
использует для записи числа 2 символа
(цифры): 0 и 1.
В каждом разряде допустима только
одна цифра — либо 0, либо 1.
Двоичная система
Двоичная система
Примером может служить число 101.
Оно аналогично числу 5 в десятичной
системе счисления. Для того, чтобы
перевести из 2-й в 10-ю необходимо
умножить каждую цифру двоичного
числа на основание “2”, возведённое в
степень, равную разряду. Таким
образом, число 1012 = 1*22
+ 0*21
+
1*20
= 4+0+1 = 510.
Перевод числа из десятичнй в
двоичную систему исчесления.
Делим десятичное число
на два до тех пор, пока
не получим неделимый
на два остаток. На
каждом шаге деления
получим остаток 1 (если
делимое число было
нечётным) или 0 (если
делимое делится на два
без остатка). Все эти
остатки обязательно
должны быть учтены.
Двоичная система
Компьютеры используют двоичную
систему так как она имеет ряд
преимуществ перед другими
системами:
для ее реализации нужны
технические устройства с двумя
устойчивыми состояниями (есть ток —
нет тока, намагничен — не намагничен
и т.п.), а не, например, с десятью, —
как в десятичной;
Двоичная система
представление информации посредством
только двух состояний надежно и
помехоустойчиво;
возможно применение аппарата булевой
алгебры для выполнения логических
преобразований информации;
 двоичная арифметика намного проще
десятичной.
Недостаток двоичной системы — быстрый
рост числа разрядов, необходимых для
записи чисел.
Восьмеричная система счисления
8-я система счисления, как и двоичная,
часто применяется в цифровой технике.
Имеет основание 8 и использует для
записи числа цифры от 0 до 7.
Пример восьмеричного числа: 254. Для
перевода в 10-ю систему необходимо каждый
разряд исходного числа умножить на 8n
, где n
— это номер разряда. Получается, что 2548 =
2*82
+ 5*81
+ 4*80
= 128+40+4 = 17210.
Восьмеричная система счисления
Характеризуется лёгким
переводом восьмеричных чисел в
двоичные и обратно, путём
замены восьмеричных чисел на
триплеты двоичных. Широко
использовалась в
программировании и
компьютерной документации,
однако позднее была почти
полностью вытеснена
шестнадцатеричной.
08
= 0002
18
= 0012
28
= 0102
38
= 0112
48
= 1002
58
= 1012
68
= 1102
78
= 1112
Шестнадцатеричная система счисления
Шестнадцатеричная система широко
используется в современных
компьютерах, например при помощи
неё указывается цвет: #FFFFFF —
белый цвет. Рассматриваемая система
имеет основание 16 и использует для
записи числа: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A,
B, C, D, E, F, где буквы равны 10, 11, 12,
13, 14, 15 соответственно.
Шестнадцатеричная система счисления
Шестнадцате
ричная
Двоичная
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
Шестнадцатери
чная
Двоичная
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111
Пример: 0xA29F =
1010001010011111
Шестнадцатеричная система счисления
Широко используется в низкоуровневом
программировании и компьютерной
документации, поскольку в
современных компьютерах
минимальной единицей памяти
является 8-битный байт, значения
которого удобно записывать двумя
шестнадцатеричными цифрами/
Например 0xFF.
Дополнительный код (представление
числа)
Дополнительный код (англ. two’s
complement) — наиболее
распространённый способ
представления отрицательных целых
чисел в компьютерах. Он позволяет
заменить операцию вычитания на
операцию сложения и сделать
операции сложения и вычитания
одинаковыми для знаковых и без
знаковых чисел.
Дополнительный код (представление
числа)
Дополнительный код
отрицательного числа можно
получить инвертированием модуля
двоичного числа (первое
дополнение) и прибавлением к
инверсии единицы (второе
дополнение), либо вычитанием
числа из нуля.
Преобразование в дополнительный код
 Если число, записанное в прямом коде,
положительное, то к нему дописывается
старший (знаковый) разряд, равный 0, и на
этом преобразование заканчивается;
 Если число, записанное в прямом коде,
отрицательное, то все разряды числа
инвертируются, а к результату прибавляется
1. К получившемуся числу дописывается
старший (знаковый) разряд, равный 1.
Побитовые операции
Битовые (поразрядные) операции
применяются для быстрого выполнения
вычислений и меньшего потребления
ресурсов, связанных с этими
вычислениями.
Битовые операции
Битовые операции изучаются в
дискретной математике, а также лежат
в основе цифровой техники, так как на
них основана логика работы логических
вентилей — базовых элементов
цифровых схем.
Побитовые операции
Побитовые операции могут
оперировать только целыми
значениями.
Побитовые операции с вещественными
типами не поддерживаются!
Побитовые операции
| ИЛИ (OR)
& И (AND)
Операции побитового сдвига
<< сдвиг влево
>> сдвиг вправо
Побитовое ИЛИ (OR)
Выставляет значение в 1, если
установлен соответствующий бит в
первой или во второй
последовательности, или вместе
00000000 01111011 (123) |
00000001 11001000 (456)
=
00000001 11111011 (507)
Побитовое И (AND)
Обозначается символом &
Выставляет значение в 1, если установлены
соответствующие биты в первой и второй
последовательности одновременно
00000000 01111011 (123)
&
00000001 11001000 (456)
=
00000000 01001000 (57)
ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR)
Обозначается символом ^
Выставляет значение в 1, если установлен
соответствующий бит или в первой или во
второй во второй последовательности, но не
одновременно.
Если используется более двух
последовательностей, то в результате будет
единица тогда, когда общее количество
единиц соответствующей позиции нечётное
Пример XOR
00000000 01111011 (123)
^
00000001 11001000 (456)
=
00000001 10110011 (435)
ПОБИТОВОЕ ОТРИЦАНИЕ (NOT)
Обозначается символом ~
Унарный операторы. Превращает каждый бит
в противоположный.
~
00000000 01111011 (123)
=
11111111 10000100 (-124)
Знаковый оператор сдвига влево <<
Все биты смещаются влево. Число справа
дополняется нулём Операция используется для
быстрого умножения на 2. Если оператор
применяется к числу, умножение на 2 которого будет
больше максимального значения int (2147483647), то
в результате будет отрицательное число. Это
происходит потому, что крайний левый бит, который
отвечает за знак числа, выставляется в единицу, что
соответствует отрицательным числам.
11111111 11111111 11111111 10000101 (-123) <<
11111111 11111111 11111111 00001010 (-246)
Знаковый оператор сдвига вправо >>
Все биты смещаются вправо. Число слева
дополняется нулём, если число
положительное и единицей, если
отрицательное. Операция используется для
быстрого деления на 2. Если делится
нечётное число, то остаток отбрасывается
для положительных чисел и сохраняется для
отрицательных.
11111111 11111111 11111111 10000101 (-123)
>> 11111111 11111111 11111111 11000010 (-
62)
Без знаковый оператор сдвига >>>
Все биты смещаются вправо, число слева
дополняется нулём, даже если операция
выполняется с отрицательными числами. Отсюда и
название оператора — без знаковый. В результате
применения оператора всегда получается
положительное число. Операция так же, как и
знаковый оператор сдвига вправо, соответствует
делению числа на два за исключением первого
сдвига в отрицательном числе.
11111111 11111111 11111111 10000101 (-123) >>>
01111111 11111111 11111111 11000010 (2147483586)
Когда количество сдвигов превышает
количество разрядов
При использовании битовых сдвигов важно помнить,
что когда количество сдвигов достигает количества
разрядов, следующий сдвиг вернёт значение в
исходное положение. Например, сдвиг влево:
0 - 00000000000000000000000001111011 (123)
1 - 00000000000000000000000011110110 (246)
...
30 - 11000000000000000000000000000000 (-
1073741824)
31 - 10000000000000000000000000000000 (-
2147483648)
32 - 00000000000000000000000001111011 (123)
Некоторые побитовые операторы
похожи на логические операторы (&, |, ^,
&&, ||), с которыми вы уже знакомы. Это
связано, с тем что они выполняют
одинаковые функции, но так как
операнды и результат совершенно
разные, путать их ни в коем случае
нельзя.
Побитовые операторы и логические
операторы
Приведение чисел к
соответствующему типу данных
При использовании побитовых
операций с типами данных byte/short,
числа сначала приводятся к типу int, а
если одно из чисел — long, то к long.
При сужении типа данных, левая часть
битов просто отбрасывается.
Использование маски
Одним из приёмов работы с
битовыми данными является
использование маски. Маска
позволяет получать значения
только определённых битов в
последовательности.
Использование маски
Например, у нас есть маска 00100100,
она позволяет нам получать из
последовательности только те биты,
которые в ней установлены. В данном
случае это 3-й и 7-й разряд. Для этого
достаточно выполнить побитовое И с
нашей маской и неким числом:
01010101 & 00100100 = 00000100
Хранение в одной целочисленной
переменной нескольких значений
При помощи битовых сдвигов можно хранить
в одной целочисленной переменной
несколько значений меньшей длины.
Например, в первых нескольких битах можно
хранить одно число, в следующих битах —
другое. Требуется только знать, на сколько
бит выполняется сдвиг и сколько бит
занимает хранимое число. Для записи
используется логическое ИЛИ, для получения
— И.
Обмен переменных местами без
использования временной переменной
Исключающее ИЛИ может быть использовано
для обмена двух переменных без создания
временной переменной:
void xorSwap(int x, int y) {
x = x^y;
y = y^x;
x = x^y;
}
Работа с правами доступа
Принцип следующий. Имеется
последовательность из трёх битов, где:
001 — первый бит отвечает за права на
выполнение
010 — второй — запись
100 — третий — чтение
Работа с правами доступа
Имеем следующие константы.
final int EXECUTE = 1; //001
final int WRITE = 2; //010
final int READ = 4; //100
Работа с правами доступа
Допустим, нам требуется дать
пользователю полный доступ к ресурсу.
Для этого должен быть выставлен
каждый бит:
int usersAccess = EXECUTE | WRITE | READ;
//Получили значение 7 (111)
Работа с правами доступа
А теперь, допустим, что нам надо
забрать у пользователя права на
выполнение:
usersAccess = usersAccess ^ EXECUTE;
//Получили значение 6 (110)
Быстрое умножение и деление
Операции сдвига рекомендуют
использовать для быстрого умножения
и деления целых чисел на числа,
равные степени двойки. Например,
выражение 3 << 4 соответствует
умножению тройки на 2 в 4-й степени.
Шифр Вернама
На основе
исключающего
ИЛИ работает
шифр Вернама,
для которого
была доказана абсолютная
криптографическая стойкость. Шифр был
«взломан» в фильме «Пароль «Рыба-меч»»

More Related Content

What's hot

Menyusun Panitia Akreditasi Rumah Sakit Versi Baru
Menyusun Panitia Akreditasi Rumah Sakit Versi Baru Menyusun Panitia Akreditasi Rumah Sakit Versi Baru
Menyusun Panitia Akreditasi Rumah Sakit Versi Baru
Robertus Arian Datusanantyo
 
Penyusunan rancangan rekam medis elektronik (RME)
Penyusunan rancangan rekam medis elektronik (RME)Penyusunan rancangan rekam medis elektronik (RME)
Penyusunan rancangan rekam medis elektronik (RME)
Agus Mutamakin
 
SQL Server Stored procedures
SQL Server Stored proceduresSQL Server Stored procedures
MATERI SOS ITERASI (2).pdf
MATERI SOS ITERASI (2).pdfMATERI SOS ITERASI (2).pdf
MATERI SOS ITERASI (2).pdf
YudaPratamaBorneo
 
Presentasi pencatatan dan pelaporan rm fix dikonversi
Presentasi pencatatan dan pelaporan rm fix dikonversiPresentasi pencatatan dan pelaporan rm fix dikonversi
Presentasi pencatatan dan pelaporan rm fix dikonversi
rickygunawan84
 
Sistem Indexing Dokumen Rekam Medis
Sistem Indexing Dokumen Rekam MedisSistem Indexing Dokumen Rekam Medis
Sistem Indexing Dokumen Rekam Medis
Fahmi Hakam
 
Resume praktikum 5__linked_list
Resume praktikum 5__linked_listResume praktikum 5__linked_list
Resume praktikum 5__linked_list
Deprilana Ego Prakasa
 
Buku Juknis Bantuan Operasional Kesehatan
Buku Juknis Bantuan Operasional KesehatanBuku Juknis Bantuan Operasional Kesehatan
Buku Juknis Bantuan Operasional Kesehatan
Anggit T A W
 
Koding INA-CBG
Koding INA-CBGKoding INA-CBG
Koding INA-CBG
Dokter Tekno
 
Implementasi Telemedicine di Indonesia
Implementasi Telemedicine di IndonesiaImplementasi Telemedicine di Indonesia
Implementasi Telemedicine di Indonesia
Stefanus Nofa
 
CodeIgniter
CodeIgniterCodeIgniter
CodeIgniter
Anayely Priincess
 
Kebijakan Implementasi Sisrute 09 Maret 2023.pptx
Kebijakan Implementasi Sisrute 09 Maret 2023.pptxKebijakan Implementasi Sisrute 09 Maret 2023.pptx
Kebijakan Implementasi Sisrute 09 Maret 2023.pptx
CindyKesty2
 
Spo rekam medik
Spo rekam medikSpo rekam medik
Spo rekam medik
khusnuleza
 
Penyelenggaraan Kredensial.pptx
Penyelenggaraan Kredensial.pptxPenyelenggaraan Kredensial.pptx
Penyelenggaraan Kredensial.pptx
SilvianaHendrawati
 
Basis Data Non Relasional: NoSQL dan MongoDB
Basis Data Non Relasional: NoSQL dan MongoDBBasis Data Non Relasional: NoSQL dan MongoDB
Basis Data Non Relasional: NoSQL dan MongoDBRiana Dwiningtyas
 
Analisis Kuantitatif dan Kualitatif Dokumen Rekam Medis
Analisis Kuantitatif dan Kualitatif Dokumen Rekam MedisAnalisis Kuantitatif dan Kualitatif Dokumen Rekam Medis
Analisis Kuantitatif dan Kualitatif Dokumen Rekam Medis
Fahmi Hakam
 
Sop pelayanan sediaan farmasi tanpa resep
Sop pelayanan sediaan farmasi tanpa resepSop pelayanan sediaan farmasi tanpa resep
Sop pelayanan sediaan farmasi tanpa resep
supriadiyadi1
 
Tugas database perpus
Tugas database perpusTugas database perpus
Tugas database perpus
Fandi Rahmat
 
Spo pendaftaran-pasien-rawat-inap
Spo pendaftaran-pasien-rawat-inapSpo pendaftaran-pasien-rawat-inap
Spo pendaftaran-pasien-rawat-inap
Irawati90
 
Teknis pelaksanaan safari wukuf dan badal haji
Teknis pelaksanaan safari wukuf dan badal hajiTeknis pelaksanaan safari wukuf dan badal haji
Teknis pelaksanaan safari wukuf dan badal haji
rickygunawan84
 

What's hot (20)

Menyusun Panitia Akreditasi Rumah Sakit Versi Baru
Menyusun Panitia Akreditasi Rumah Sakit Versi Baru Menyusun Panitia Akreditasi Rumah Sakit Versi Baru
Menyusun Panitia Akreditasi Rumah Sakit Versi Baru
 
Penyusunan rancangan rekam medis elektronik (RME)
Penyusunan rancangan rekam medis elektronik (RME)Penyusunan rancangan rekam medis elektronik (RME)
Penyusunan rancangan rekam medis elektronik (RME)
 
SQL Server Stored procedures
SQL Server Stored proceduresSQL Server Stored procedures
SQL Server Stored procedures
 
MATERI SOS ITERASI (2).pdf
MATERI SOS ITERASI (2).pdfMATERI SOS ITERASI (2).pdf
MATERI SOS ITERASI (2).pdf
 
Presentasi pencatatan dan pelaporan rm fix dikonversi
Presentasi pencatatan dan pelaporan rm fix dikonversiPresentasi pencatatan dan pelaporan rm fix dikonversi
Presentasi pencatatan dan pelaporan rm fix dikonversi
 
Sistem Indexing Dokumen Rekam Medis
Sistem Indexing Dokumen Rekam MedisSistem Indexing Dokumen Rekam Medis
Sistem Indexing Dokumen Rekam Medis
 
Resume praktikum 5__linked_list
Resume praktikum 5__linked_listResume praktikum 5__linked_list
Resume praktikum 5__linked_list
 
Buku Juknis Bantuan Operasional Kesehatan
Buku Juknis Bantuan Operasional KesehatanBuku Juknis Bantuan Operasional Kesehatan
Buku Juknis Bantuan Operasional Kesehatan
 
Koding INA-CBG
Koding INA-CBGKoding INA-CBG
Koding INA-CBG
 
Implementasi Telemedicine di Indonesia
Implementasi Telemedicine di IndonesiaImplementasi Telemedicine di Indonesia
Implementasi Telemedicine di Indonesia
 
CodeIgniter
CodeIgniterCodeIgniter
CodeIgniter
 
Kebijakan Implementasi Sisrute 09 Maret 2023.pptx
Kebijakan Implementasi Sisrute 09 Maret 2023.pptxKebijakan Implementasi Sisrute 09 Maret 2023.pptx
Kebijakan Implementasi Sisrute 09 Maret 2023.pptx
 
Spo rekam medik
Spo rekam medikSpo rekam medik
Spo rekam medik
 
Penyelenggaraan Kredensial.pptx
Penyelenggaraan Kredensial.pptxPenyelenggaraan Kredensial.pptx
Penyelenggaraan Kredensial.pptx
 
Basis Data Non Relasional: NoSQL dan MongoDB
Basis Data Non Relasional: NoSQL dan MongoDBBasis Data Non Relasional: NoSQL dan MongoDB
Basis Data Non Relasional: NoSQL dan MongoDB
 
Analisis Kuantitatif dan Kualitatif Dokumen Rekam Medis
Analisis Kuantitatif dan Kualitatif Dokumen Rekam MedisAnalisis Kuantitatif dan Kualitatif Dokumen Rekam Medis
Analisis Kuantitatif dan Kualitatif Dokumen Rekam Medis
 
Sop pelayanan sediaan farmasi tanpa resep
Sop pelayanan sediaan farmasi tanpa resepSop pelayanan sediaan farmasi tanpa resep
Sop pelayanan sediaan farmasi tanpa resep
 
Tugas database perpus
Tugas database perpusTugas database perpus
Tugas database perpus
 
Spo pendaftaran-pasien-rawat-inap
Spo pendaftaran-pasien-rawat-inapSpo pendaftaran-pasien-rawat-inap
Spo pendaftaran-pasien-rawat-inap
 
Teknis pelaksanaan safari wukuf dan badal haji
Teknis pelaksanaan safari wukuf dan badal hajiTeknis pelaksanaan safari wukuf dan badal haji
Teknis pelaksanaan safari wukuf dan badal haji
 

Viewers also liked

List - списки
List - списки List - списки
List - списки
Unguryan Vitaliy
 
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.
Unguryan Vitaliy
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.
Unguryan Vitaliy
 
Java. Интерфейс Reference - типы ссылок
Java. Интерфейс Reference -  типы ссылокJava. Интерфейс Reference -  типы ссылок
Java. Интерфейс Reference - типы ссылок
Unguryan Vitaliy
 
Java. Циклы.
Java. Циклы.Java. Циклы.
Java. Циклы.
Unguryan Vitaliy
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.
Unguryan Vitaliy
 
Java. Инкапсуляция.
Java. Инкапсуляция.Java. Инкапсуляция.
Java. Инкапсуляция.
Unguryan Vitaliy
 
An Introduction to JVM Internals and Garbage Collection in Java
An Introduction to JVM Internals and Garbage Collection in JavaAn Introduction to JVM Internals and Garbage Collection in Java
An Introduction to JVM Internals and Garbage Collection in Java
Abhishek Asthana
 
Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.
Unguryan Vitaliy
 
Java. Generic - шаблонные типы.
Java.  Generic - шаблонные типы.Java.  Generic - шаблонные типы.
Java. Generic - шаблонные типы.
Unguryan Vitaliy
 
Алгоритмы поиска и сортировки
Алгоритмы  поиска и сортировкиАлгоритмы  поиска и сортировки
Алгоритмы поиска и сортировки
Unguryan Vitaliy
 
Java. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередьJava. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередь
Unguryan Vitaliy
 
Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.
Unguryan Vitaliy
 
Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.
Unguryan Vitaliy
 
Исключения и ошибки
Исключения и ошибкиИсключения и ошибки
Исключения и ошибки
Unguryan Vitaliy
 
Java. Методы
Java. Методы Java. Методы
Java. Методы
Unguryan Vitaliy
 
Java. Наследование.
Java. Наследование.Java. Наследование.
Java. Наследование.
Unguryan Vitaliy
 
Java. Введение в коллекции. Классы обертки. Перечисленияю
Java. Введение в коллекции. Классы обертки.  ПеречисленияюJava. Введение в коллекции. Классы обертки.  Перечисленияю
Java. Введение в коллекции. Классы обертки. Перечисленияю
Unguryan Vitaliy
 
Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация
Unguryan Vitaliy
 

Viewers also liked (20)

List - списки
List - списки List - списки
List - списки
 
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.
 
Uml
UmlUml
Uml
 
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.
 
Java. Интерфейс Reference - типы ссылок
Java. Интерфейс Reference -  типы ссылокJava. Интерфейс Reference -  типы ссылок
Java. Интерфейс Reference - типы ссылок
 
Java. Циклы.
Java. Циклы.Java. Циклы.
Java. Циклы.
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.
 
Java. Инкапсуляция.
Java. Инкапсуляция.Java. Инкапсуляция.
Java. Инкапсуляция.
 
An Introduction to JVM Internals and Garbage Collection in Java
An Introduction to JVM Internals and Garbage Collection in JavaAn Introduction to JVM Internals and Garbage Collection in Java
An Introduction to JVM Internals and Garbage Collection in Java
 
Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.
 
Java. Generic - шаблонные типы.
Java.  Generic - шаблонные типы.Java.  Generic - шаблонные типы.
Java. Generic - шаблонные типы.
 
Алгоритмы поиска и сортировки
Алгоритмы  поиска и сортировкиАлгоритмы  поиска и сортировки
Алгоритмы поиска и сортировки
 
Java. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередьJava. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередь
 
Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.
 
Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.
 
Исключения и ошибки
Исключения и ошибкиИсключения и ошибки
Исключения и ошибки
 
Java. Методы
Java. Методы Java. Методы
Java. Методы
 
Java. Наследование.
Java. Наследование.Java. Наследование.
Java. Наследование.
 
Java. Введение в коллекции. Классы обертки. Перечисленияю
Java. Введение в коллекции. Классы обертки.  ПеречисленияюJava. Введение в коллекции. Классы обертки.  Перечисленияю
Java. Введение в коллекции. Классы обертки. Перечисленияю
 
Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация
 

Similar to Java. Cистемы счислния, битовые операции

система счисления
система счислениясистема счисления
система счисления
Helen_Hell
 
05
0505
05JIuc
 
Sistemy schisleniya munchesku
Sistemy schisleniya muncheskuSistemy schisleniya munchesku
Sistemy schisleniya munchesku
east-man
 
системы счисления
системы счислениясистемы счисления
системы счисления
serg32
 
лекция 3.docx
лекция 3.docxлекция 3.docx
лекция 3.docx
ssuser6d63bc1
 
представление чисел в компьютере
представление чисел в компьютерепредставление чисел в компьютере
представление чисел в компьютереЕлена Ключева
 
системы счиление
системы счилениесистемы счиление
системы счилениеYUYFF
 
пр 3 перевод чисел.docx
пр 3 перевод чисел.docxпр 3 перевод чисел.docx
пр 3 перевод чисел.docx
ssuser6d63bc1
 
системы счисления
системы счислениясистемы счисления
системы счисленияkozarezov_vi
 
системы счисления
системы счислениясистемы счисления
системы счисленияkozarezov
 
Тема Системы счисления
Тема Системы счисленияТема Системы счисления
Тема Системы счисления
Ольга Матькина
 
лекция 4 системы счисления информатика
лекция 4 системы счисления информатикалекция 4 системы счисления информатика
лекция 4 системы счисления информатикаGulnaz Shakirova
 
Системы счисления
Системы счисленияСистемы счисления
Системы счисления
Andrey Dolinin
 
9 1.1 - системы счисления
9 1.1 - системы счисления9 1.1 - системы счисления
9 1.1 - системы счисленияjula-mam
 
03
0303
03JIuc
 
лекция 8 арифметические операции информатика
лекция 8 арифметические операции информатикалекция 8 арифметические операции информатика
лекция 8 арифметические операции информатикаGulnaz Shakirova
 
лекция 8 арифметические операции информатика
лекция 8 арифметические операции информатикалекция 8 арифметические операции информатика
лекция 8 арифметические операции информатикаGulnaz Shakirova
 
системы счисления Усков
системы счисления Усковсистемы счисления Усков
системы счисления УсковDevol1
 
системы счисления
системы счислениясистемы счисления
системы счисленияkozarezov94
 

Similar to Java. Cистемы счислния, битовые операции (20)

система счисления
система счислениясистема счисления
система счисления
 
05
0505
05
 
8
88
8
 
Sistemy schisleniya munchesku
Sistemy schisleniya muncheskuSistemy schisleniya munchesku
Sistemy schisleniya munchesku
 
системы счисления
системы счислениясистемы счисления
системы счисления
 
лекция 3.docx
лекция 3.docxлекция 3.docx
лекция 3.docx
 
представление чисел в компьютере
представление чисел в компьютерепредставление чисел в компьютере
представление чисел в компьютере
 
системы счиление
системы счилениесистемы счиление
системы счиление
 
пр 3 перевод чисел.docx
пр 3 перевод чисел.docxпр 3 перевод чисел.docx
пр 3 перевод чисел.docx
 
системы счисления
системы счислениясистемы счисления
системы счисления
 
системы счисления
системы счислениясистемы счисления
системы счисления
 
Тема Системы счисления
Тема Системы счисленияТема Системы счисления
Тема Системы счисления
 
лекция 4 системы счисления информатика
лекция 4 системы счисления информатикалекция 4 системы счисления информатика
лекция 4 системы счисления информатика
 
Системы счисления
Системы счисленияСистемы счисления
Системы счисления
 
9 1.1 - системы счисления
9 1.1 - системы счисления9 1.1 - системы счисления
9 1.1 - системы счисления
 
03
0303
03
 
лекция 8 арифметические операции информатика
лекция 8 арифметические операции информатикалекция 8 арифметические операции информатика
лекция 8 арифметические операции информатика
 
лекция 8 арифметические операции информатика
лекция 8 арифметические операции информатикалекция 8 арифметические операции информатика
лекция 8 арифметические операции информатика
 
системы счисления Усков
системы счисления Усковсистемы счисления Усков
системы счисления Усков
 
системы счисления
системы счислениясистемы счисления
системы счисления
 

More from Unguryan Vitaliy

Модульное тестирование.
Модульное тестирование. Модульное тестирование.
Модульное тестирование.
Unguryan Vitaliy
 
Stream API
Stream APIStream API
Stream API
Unguryan Vitaliy
 
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVC
Unguryan Vitaliy
 
Работа в команде, управление программными проектами
Работа в команде, управление программными проектамиРабота в команде, управление программными проектами
Работа в команде, управление программными проектами
Unguryan Vitaliy
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версий
Unguryan Vitaliy
 
Принципы SOLID
Принципы SOLIDПринципы SOLID
Принципы SOLID
Unguryan Vitaliy
 
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.
Unguryan Vitaliy
 
Введение в язык программирования «Java»
Введение в язык программирования «Java»Введение в язык программирования «Java»
Введение в язык программирования «Java»
Unguryan Vitaliy
 
Шаблоны проектирования GoF
Шаблоны проектирования GoFШаблоны проектирования GoF
Шаблоны проектирования GoF
Unguryan Vitaliy
 
Ввведение в java
Ввведение в javaВвведение в java
Ввведение в java
Unguryan Vitaliy
 
Введение в hibernate
Введение в hibernateВведение в hibernate
Введение в hibernate
Unguryan Vitaliy
 
Spring AOP
Spring AOPSpring AOP
Spring AOP
Unguryan Vitaliy
 
Введение в Spring
Введение в SpringВведение в Spring
Введение в Spring
Unguryan Vitaliy
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSP
Unguryan Vitaliy
 
JSTL
JSTLJSTL
JSP
JSPJSP
JDBC
JDBCJDBC
Сервлеты
СервлетыСервлеты
Сервлеты
Unguryan Vitaliy
 
Сетевое взаимодействие
Сетевое взаимодействиеСетевое взаимодействие
Сетевое взаимодействие
Unguryan Vitaliy
 
Введение в сетевые технологии
Введение в сетевые технологииВведение в сетевые технологии
Введение в сетевые технологии
Unguryan Vitaliy
 

More from Unguryan Vitaliy (20)

Модульное тестирование.
Модульное тестирование. Модульное тестирование.
Модульное тестирование.
 
Stream API
Stream APIStream API
Stream API
 
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVC
 
Работа в команде, управление программными проектами
Работа в команде, управление программными проектамиРабота в команде, управление программными проектами
Работа в команде, управление программными проектами
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версий
 
Принципы SOLID
Принципы SOLIDПринципы SOLID
Принципы SOLID
 
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.
 
Введение в язык программирования «Java»
Введение в язык программирования «Java»Введение в язык программирования «Java»
Введение в язык программирования «Java»
 
Шаблоны проектирования GoF
Шаблоны проектирования GoFШаблоны проектирования GoF
Шаблоны проектирования GoF
 
Ввведение в java
Ввведение в javaВвведение в java
Ввведение в java
 
Введение в hibernate
Введение в hibernateВведение в hibernate
Введение в hibernate
 
Spring AOP
Spring AOPSpring AOP
Spring AOP
 
Введение в Spring
Введение в SpringВведение в Spring
Введение в Spring
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSP
 
JSTL
JSTLJSTL
JSTL
 
JSP
JSPJSP
JSP
 
JDBC
JDBCJDBC
JDBC
 
Сервлеты
СервлетыСервлеты
Сервлеты
 
Сетевое взаимодействие
Сетевое взаимодействиеСетевое взаимодействие
Сетевое взаимодействие
 
Введение в сетевые технологии
Введение в сетевые технологииВведение в сетевые технологии
Введение в сетевые технологии
 

Java. Cистемы счислния, битовые операции

  • 1. ПИФАГОР (570 – 500 лет до нашей эры) «ВСЕ ЕСТЬ ЧИСЛО» Системы счисления
  • 2. Системы счисления Система счисления — это способ записи (представления) чисел.
  • 3. Пример систем счисления Представьте вы видите перед собой несколько деревьев. Ваша задача — их посчитать. Для этого можно — загибать пальцы, делать зарубки на камне (одно дерево — один палецзарубка) или сопоставить 10 деревьям какой-нибудь предмет, например, камень, а единичному экземпляру — палочку и выкладывать их на землю по мере подсчёта.
  • 4. Двенадцатеричная система счисления Широкое применение до XX века имела двенадцатеричная система счисления, которую мы до сих пор можем увидеть в часах, календарных месяцах и т.д. В её основе лежит счёт фаланг палецев.
  • 6. Десятичная система счисления Появилась впервые в VII веке нашей эры. Используются арабские цифры. Основана на количестве пальцев на руках.
  • 7. Двоичная система счисления Эта система, в основном, используется в вычислительной технике. Она была создана за долго до изобретения вычислительных машин и уходит “корнями” в цивилизацию Инков, где использовались кипу — сложные верёвочные сплетения и узелки.
  • 9. Двоичная система 00001011 Двоичная (позиционная) система счисления имеет основание 2 и использует для записи числа 2 символа (цифры): 0 и 1. В каждом разряде допустима только одна цифра — либо 0, либо 1.
  • 11. Двоичная система Примером может служить число 101. Оно аналогично числу 5 в десятичной системе счисления. Для того, чтобы перевести из 2-й в 10-ю необходимо умножить каждую цифру двоичного числа на основание “2”, возведённое в степень, равную разряду. Таким образом, число 1012 = 1*22 + 0*21 + 1*20 = 4+0+1 = 510.
  • 12. Перевод числа из десятичнй в двоичную систему исчесления. Делим десятичное число на два до тех пор, пока не получим неделимый на два остаток. На каждом шаге деления получим остаток 1 (если делимое число было нечётным) или 0 (если делимое делится на два без остатка). Все эти остатки обязательно должны быть учтены.
  • 13. Двоичная система Компьютеры используют двоичную систему так как она имеет ряд преимуществ перед другими системами: для ее реализации нужны технические устройства с двумя устойчивыми состояниями (есть ток — нет тока, намагничен — не намагничен и т.п.), а не, например, с десятью, — как в десятичной;
  • 14. Двоичная система представление информации посредством только двух состояний надежно и помехоустойчиво; возможно применение аппарата булевой алгебры для выполнения логических преобразований информации;  двоичная арифметика намного проще десятичной. Недостаток двоичной системы — быстрый рост числа разрядов, необходимых для записи чисел.
  • 15. Восьмеричная система счисления 8-я система счисления, как и двоичная, часто применяется в цифровой технике. Имеет основание 8 и использует для записи числа цифры от 0 до 7. Пример восьмеричного числа: 254. Для перевода в 10-ю систему необходимо каждый разряд исходного числа умножить на 8n , где n — это номер разряда. Получается, что 2548 = 2*82 + 5*81 + 4*80 = 128+40+4 = 17210.
  • 16. Восьмеричная система счисления Характеризуется лёгким переводом восьмеричных чисел в двоичные и обратно, путём замены восьмеричных чисел на триплеты двоичных. Широко использовалась в программировании и компьютерной документации, однако позднее была почти полностью вытеснена шестнадцатеричной. 08 = 0002 18 = 0012 28 = 0102 38 = 0112 48 = 1002 58 = 1012 68 = 1102 78 = 1112
  • 17. Шестнадцатеричная система счисления Шестнадцатеричная система широко используется в современных компьютерах, например при помощи неё указывается цвет: #FFFFFF — белый цвет. Рассматриваемая система имеет основание 16 и использует для записи числа: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, где буквы равны 10, 11, 12, 13, 14, 15 соответственно.
  • 18. Шестнадцатеричная система счисления Шестнадцате ричная Двоичная 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 Шестнадцатери чная Двоичная A 1010 B 1011 C 1100 D 1101 E 1110 F 1111 Пример: 0xA29F = 1010001010011111
  • 19. Шестнадцатеричная система счисления Широко используется в низкоуровневом программировании и компьютерной документации, поскольку в современных компьютерах минимальной единицей памяти является 8-битный байт, значения которого удобно записывать двумя шестнадцатеричными цифрами/ Например 0xFF.
  • 20. Дополнительный код (представление числа) Дополнительный код (англ. two’s complement) — наиболее распространённый способ представления отрицательных целых чисел в компьютерах. Он позволяет заменить операцию вычитания на операцию сложения и сделать операции сложения и вычитания одинаковыми для знаковых и без знаковых чисел.
  • 21. Дополнительный код (представление числа) Дополнительный код отрицательного числа можно получить инвертированием модуля двоичного числа (первое дополнение) и прибавлением к инверсии единицы (второе дополнение), либо вычитанием числа из нуля.
  • 22. Преобразование в дополнительный код  Если число, записанное в прямом коде, положительное, то к нему дописывается старший (знаковый) разряд, равный 0, и на этом преобразование заканчивается;  Если число, записанное в прямом коде, отрицательное, то все разряды числа инвертируются, а к результату прибавляется 1. К получившемуся числу дописывается старший (знаковый) разряд, равный 1.
  • 23. Побитовые операции Битовые (поразрядные) операции применяются для быстрого выполнения вычислений и меньшего потребления ресурсов, связанных с этими вычислениями.
  • 24. Битовые операции Битовые операции изучаются в дискретной математике, а также лежат в основе цифровой техники, так как на них основана логика работы логических вентилей — базовых элементов цифровых схем.
  • 25. Побитовые операции Побитовые операции могут оперировать только целыми значениями. Побитовые операции с вещественными типами не поддерживаются!
  • 27. Операции побитового сдвига << сдвиг влево >> сдвиг вправо
  • 28. Побитовое ИЛИ (OR) Выставляет значение в 1, если установлен соответствующий бит в первой или во второй последовательности, или вместе 00000000 01111011 (123) | 00000001 11001000 (456) = 00000001 11111011 (507)
  • 29. Побитовое И (AND) Обозначается символом & Выставляет значение в 1, если установлены соответствующие биты в первой и второй последовательности одновременно 00000000 01111011 (123) & 00000001 11001000 (456) = 00000000 01001000 (57)
  • 30. ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR) Обозначается символом ^ Выставляет значение в 1, если установлен соответствующий бит или в первой или во второй во второй последовательности, но не одновременно. Если используется более двух последовательностей, то в результате будет единица тогда, когда общее количество единиц соответствующей позиции нечётное
  • 31. Пример XOR 00000000 01111011 (123) ^ 00000001 11001000 (456) = 00000001 10110011 (435)
  • 32. ПОБИТОВОЕ ОТРИЦАНИЕ (NOT) Обозначается символом ~ Унарный операторы. Превращает каждый бит в противоположный. ~ 00000000 01111011 (123) = 11111111 10000100 (-124)
  • 33. Знаковый оператор сдвига влево << Все биты смещаются влево. Число справа дополняется нулём Операция используется для быстрого умножения на 2. Если оператор применяется к числу, умножение на 2 которого будет больше максимального значения int (2147483647), то в результате будет отрицательное число. Это происходит потому, что крайний левый бит, который отвечает за знак числа, выставляется в единицу, что соответствует отрицательным числам. 11111111 11111111 11111111 10000101 (-123) << 11111111 11111111 11111111 00001010 (-246)
  • 34. Знаковый оператор сдвига вправо >> Все биты смещаются вправо. Число слева дополняется нулём, если число положительное и единицей, если отрицательное. Операция используется для быстрого деления на 2. Если делится нечётное число, то остаток отбрасывается для положительных чисел и сохраняется для отрицательных. 11111111 11111111 11111111 10000101 (-123) >> 11111111 11111111 11111111 11000010 (- 62)
  • 35. Без знаковый оператор сдвига >>> Все биты смещаются вправо, число слева дополняется нулём, даже если операция выполняется с отрицательными числами. Отсюда и название оператора — без знаковый. В результате применения оператора всегда получается положительное число. Операция так же, как и знаковый оператор сдвига вправо, соответствует делению числа на два за исключением первого сдвига в отрицательном числе. 11111111 11111111 11111111 10000101 (-123) >>> 01111111 11111111 11111111 11000010 (2147483586)
  • 36. Когда количество сдвигов превышает количество разрядов При использовании битовых сдвигов важно помнить, что когда количество сдвигов достигает количества разрядов, следующий сдвиг вернёт значение в исходное положение. Например, сдвиг влево: 0 - 00000000000000000000000001111011 (123) 1 - 00000000000000000000000011110110 (246) ... 30 - 11000000000000000000000000000000 (- 1073741824) 31 - 10000000000000000000000000000000 (- 2147483648) 32 - 00000000000000000000000001111011 (123)
  • 37. Некоторые побитовые операторы похожи на логические операторы (&, |, ^, &&, ||), с которыми вы уже знакомы. Это связано, с тем что они выполняют одинаковые функции, но так как операнды и результат совершенно разные, путать их ни в коем случае нельзя. Побитовые операторы и логические операторы
  • 38. Приведение чисел к соответствующему типу данных При использовании побитовых операций с типами данных byte/short, числа сначала приводятся к типу int, а если одно из чисел — long, то к long. При сужении типа данных, левая часть битов просто отбрасывается.
  • 39. Использование маски Одним из приёмов работы с битовыми данными является использование маски. Маска позволяет получать значения только определённых битов в последовательности.
  • 40. Использование маски Например, у нас есть маска 00100100, она позволяет нам получать из последовательности только те биты, которые в ней установлены. В данном случае это 3-й и 7-й разряд. Для этого достаточно выполнить побитовое И с нашей маской и неким числом: 01010101 & 00100100 = 00000100
  • 41. Хранение в одной целочисленной переменной нескольких значений При помощи битовых сдвигов можно хранить в одной целочисленной переменной несколько значений меньшей длины. Например, в первых нескольких битах можно хранить одно число, в следующих битах — другое. Требуется только знать, на сколько бит выполняется сдвиг и сколько бит занимает хранимое число. Для записи используется логическое ИЛИ, для получения — И.
  • 42. Обмен переменных местами без использования временной переменной Исключающее ИЛИ может быть использовано для обмена двух переменных без создания временной переменной: void xorSwap(int x, int y) { x = x^y; y = y^x; x = x^y; }
  • 43. Работа с правами доступа Принцип следующий. Имеется последовательность из трёх битов, где: 001 — первый бит отвечает за права на выполнение 010 — второй — запись 100 — третий — чтение
  • 44. Работа с правами доступа Имеем следующие константы. final int EXECUTE = 1; //001 final int WRITE = 2; //010 final int READ = 4; //100
  • 45. Работа с правами доступа Допустим, нам требуется дать пользователю полный доступ к ресурсу. Для этого должен быть выставлен каждый бит: int usersAccess = EXECUTE | WRITE | READ; //Получили значение 7 (111)
  • 46. Работа с правами доступа А теперь, допустим, что нам надо забрать у пользователя права на выполнение: usersAccess = usersAccess ^ EXECUTE; //Получили значение 6 (110)
  • 47. Быстрое умножение и деление Операции сдвига рекомендуют использовать для быстрого умножения и деления целых чисел на числа, равные степени двойки. Например, выражение 3 << 4 соответствует умножению тройки на 2 в 4-й степени.
  • 48. Шифр Вернама На основе исключающего ИЛИ работает шифр Вернама, для которого была доказана абсолютная криптографическая стойкость. Шифр был «взломан» в фильме «Пароль «Рыба-меч»»