Что такое код localflags

Содержание

Кодирование символов

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

Для кодировки символов в Windows используется таблица ASCII (American Standard Code for Interchange of Information).

В ASCII первые 128 символов всех кодовых страниц состоят из базовой таблицы символов. Первые 32 кода базовой таблицы, начиная с нулевого, размещают управляющие коды.

Символ Код Клавиши Значение
nul Ctrl + @ Нуль
soh 1 Ctrl + A Начало заголовка
stx 2 Ctrl + B Начало текста
etx 3 Ctrl + C Конец текста
eot 4 Ctrl + D Конец передачи
enq 5 Ctrl + E Запрос
ack 6 Ctrl + F Подтверждение
bel 7 Ctrl + G Сигнал (звонок)
bs 8 Ctrl + H Забой (шаг назад)
ht 9 Ctrl + I Горизонтальная табуляция
lf 10 Ctrl + J Перевод строки
vt 11 Ctrl + K Вертикальная табуляция
ff 12 Ctrl + L Новая страница
cr 13 Ctrl + M Возврат каретки
so 14 Ctrl + N Выключить сдвиг
si 15 Ctrl + O Включить сдвиг
dle 16 Ctrl + P Ключ связи данных
dc1 17 Ctrl + Q Управление устройством 1
dc2 18 Ctrl + R Управление устройством 2
dc3 19 Ctrl + S Управление устройством 3
dc4 20 Ctrl + T Управление устройством 4
nak 21 Ctrl + U Отрицательное подтверждение
syn 22 Ctrl + V Синхронизация
etb 23 Ctrl + W Конец передаваемого блока
can 24 Ctrl + X Отказ
em 25 Ctrl + Y Конец среды
sub 26 Ctrl + Z Замена
esc 27 Ctrl + [ Ключ
fs 28 Ctrl + \ Разделитель файлов
gs 29 Ctrl + ] Разделитель группы
rs 30 Ctrl + ^ Разделитель записей
us 31 Ctrl + _ Разделитель модулей

Базовая таблица кодировки ASCII

32 пробел 48 0 64 @ 80 P 96 ` 112 p
33 ! 49 1 65 A 81 Q 97 a 113 q
34 50 2 66 B 82 R 98 b 114 r
35 # 51 3 67 C 83 S 99 c 115 s
36 $ 52 4 68 D 84 T 100 d 116 t
37 % 53 5 69 E 85 U 101 e 117 u
38 & 54 6 70 F 86 V 102 f 118 v
39 ‘ 55 7 71 G 87 W 103 g 119 w
40 ( 56 8 72 H 88 X 104 h 120 x
41 ) 57 9 73 I 89 Y 105 i 121 y
42 * 58 : 74 J 90 Z 106 j 122 z
43 + 59 ; 75 K 91 [ 107 k 123 <
44 , 60 78 N 94 ^ 110 n 126
47 / 63 ? 79 O 95 _ 111 o 127

Символы с номерами от 128 до 255 представляют собой таблицу расширения и варьируются в зависимости от набора скриптов, представленных кодировкой символов. Набор символов таблицы расширения различается в зависимости от выбранной кодовой страницы:

1251 – кодовая страница Windows

128 Ђ 144 Ђ 160 176 ° 192 А 208 Р 224 а 240 р
129 Ѓ 145 ‘ 161 Ў 177 ± 193 Б 209 С 225 б 241 с
130 ‚ 146 ’ 162 ў 178 I 194 В 210 Т 226 в 242 т
131 ѓ 147 “ 163 J 179 i 195 Г 211 У 227 г 243 у
132 „ 148 ” 164 ¤ 180 ґ 196 Д 212 Ф 228 д 244 ф
133 … 149 • 165 Ґ 181 μ 197 Е 213 Х 229 е 245 х
134 † 150 – 166 ¦ 182 ¶ 198 Ж 214 Ц 230 ж 246 ц
135 ‡ 151 — 167 § 183 · 199 З 215 Ч 231 з 247 ч
136 € 152 □ 168 Ё 184 ё 200 И 216 Ш 232 и 248 ш
137 ‰ 153 ™ 169 © 185 № 201 Й 217 Щ 233 й 249 щ
138 Љ 154 љ 170 Є 186 є 202 К 218 Ъ 234 к 250 ъ
139 171 « 187 » 203 Л 219 Ы 235 л 251 ы
140 Њ 156 њ 172 ¬ 188 j 204 М 220 Ь 236 м 252 ь
141 Ќ 157 ќ 173 189 S 205 Н 221 Э 237 н 253 э
142 Ћ 158 ћ 174 ® 190 s 206 О 222 Ю 238 о 254 ю
143 Џ 159 џ 175 Ï 191 ї 207 П 223 Я 239 п 255 я

866 – кодовая страница DOS

128 А 144 Р 160 а 176 ░ 192 └ 208 ╨ 224 р 240 ≡Ё
129 Б 145 С 161 б 177 ▒ 193 ┴ 209 ╤ 225 с 241 ±ё
130 В 146 Т 162 в 178 ▓ 194 ┬ 210 ╥ 226 т 242 ≥
131 Г 147 У 163 г 179 │ 195 ├ 211 ╙ 227 у 243 ≤
132 Д 148 Ф 164 д 180 ┤ 196 ─ 212 ╘ 228 ф 244 ⌠
133 Е 149 Х 165 е 181 ╡ 197 ┼ 213 ╒ 229 х 245 ⌡
134 Ж 150 Ц 166 ж 182 ╢ 198 ╞ 214 ╓ 230 ц 246 ¸
135 З 151 Ч 167 з 183 ╖ 199 ╟ 215 ╫ 231 ч 247 »
136 И 152 Ш 168 и 184 ╕ 200 ╚ 216 ╪ 232 ш 248 °
137 Й 153 Щ 169 й 185 ╣ 201 ╔ 217 ┘ 233 щ 249 ·
138 К 154 Ъ 170 к 186 ║ 202 ╩ 218 ┌ 234 ъ 250 ∙
139 Л 155 Ы 171 л 187 ╗ 203 ╦ 219 █ 235 ы 251 √
140 М 156 Ь 172 м 188 ╝ 204 ╠ 220 ▄ 236 ь 252 ⁿ
141 Н 157 Э 173 н 189 ╜ 205 ═ 221 ▌ 237 э 253 ²
142 О 158 Ю 174 о 190 ╛ 206 ╬ 222 ▐ 238 ю 254 ■
143 П 159 Я 175 п 191 ┐ 207 ╧ 223 ▀ 239 я 255

Русские названия основных спецсимволов:

Символ Название
` гравис, кавычка, обратный машинописный апостроф
` гравис, кавычка, обратный машинописный апостроф
тильда
! восклицательный знак
@ эт, коммерческое эт, «собака»
# октоторп, решетка, диез
$ знак доллара
% процент
^ циркумфлекс, знак вставки
& амперсанд
* астериск, звездочка, знак умножения
( левая открывающая круглая скобка
) правая закрывающая круглая скобка
минус, дефис
_ знак подчеркивания
= знак равенства
+ плюс
[ левая открывающая квадратная скобка
] правая закрывающая квадратная скобка
< левая открывающая фигурная скобка
> правая закрывающая фигурная скобка
; точка с запятой
: двоеточие
машинописный апостроф, одинарная кавычка
« двойная кавычка
, запятая
. точка
/ слэш, косая черта, знак дроби
правая закрытая угловая скобка, знак больше
\ обратный слэш, обратная косая черта
| вертикальная черта

Кодировка UNICODE

Юникод (Unicode) — стандарт кодирования символов, позволяющий представить знаки практически всех письменных языков. Стандарт предложен в 1991 году некоммерческой организацией «Консорциум Юникода».

В Unicode используются 16-битовые (2-байтовые) коды, что позволяет представить 65536 символов.

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

Для представления символьных данных в кодировке Unicode используется символьный тип wchar_t .

ASCII UNICODE
char wchar_t
1 байт 2 байта

Тип кодировки задается в свойствах проекта Microsoft Visual Studio:

Многобайтовая кодировка предполагает использование кодировки ASCII.
При этом при построении проекта используется директива условной компиляции, переопределяющая тип TCHAR :

Для перекодирования строки в формат Unicode без изменения кодировки файла используется макроопределение
_T(«строка»)

Прототип макроса содержится в файле tchar.h .

Запись десятичных чисел (двоично-десятичный код)

Иногда бывает удобно хранить числа в памяти процессора в десятичном виде (Например, для вывода на экран дисплея). Для записи таких чисел используются двоично-десятичные коды. Не нужно путать двоично-десятичный код с десятичной системой счисления. Для записи одного десятичного разряда используется четыре двоичных бита. Эти четыре бита называются тетрадой. Иногда встречается название, пришедшее из англоязычной литературы: нибл. При помощи четырех бит можно закодировать шестнадцать цифр. Лишние комбинации в двоично-десятичном коде являются запрещенными. Таблица соответствия двоично-десятичного кода и десятичных цифр приведена ниже:

Двоично-десятичный код Десятичный код
1 1
1 2
1 1 3
1 4
1 1 5
1 1 6
1 1 1 7
1 8
1 1 9

Остальные комбинации двоичного кода в тетраде являются запрещенными. Запишем пример двоично-десятичного кода:

В первой тетраде записана цифра 1, во второй — 2, в третьей — 5, а в последней тетраде записана цифра 8. В данном примере для записи числа 1258 потребовалось четыре тетрады. Количество ячеек памяти микропроцессора зависит от его разрядности. При 16-разрядном процессоре все число уместится в одну ячейку памяти.

В данном примере для записи числа достаточно трех тетрад, но ячейка памяти 16-разрядная. Поэтому старшая тетрада заполняется нулями. Они не изменяют значение цифры. Если бы мы заполнили нулями младшую тетраду, то число увеличилось бы в десять раз!

При записи десятичных чисел часто требуется записывать знак числа и десятичную запятую (в англоязычных странах точку). Двоично-десятичный код часто применяется для набора телефонного номера или набора кодов телефонных служб. В этом случае кроме десятичных цифр часто применяются символы ‘*’ или ‘#’. Для записи этих символов в двоично-десятичном коде применяются запрещенные комбинации

Двоично-десятичный код Дополнительный символ
1 1 * (звёздочка)
1 1 1 # (решётка)
1 1 + (плюс)
1 1 1 – (минус)
1 1 1 , (десятичная запятая)
1 1 1 1 Символ гашения

Достаточно часто в памяти процессора для хранения одной десятичной цифры выделяется одна ячейка памяти (восьми, шестнадцати или тридцатидвухразрядная). Это делается для повышения скорости работы программы. Для того, чтобы отличить такой способ записи двоично-десятичного числа от стандартного, способ записи десятичного числа, как это показано в примере, называется упакованной формой двоично-десятичного числа. Запишем те же числа, что и в предыдущем примере в неупакованном двоично-десятичном коде для восьмиразрядного процессора:

В первой строке записана цифра 1, во второй — 2, в третьей — 5, а в последней строке записана цифра 8. В данном примере для записи числа 1258 потребовалось четыре строки (ячейки памяти)

Суммирование двоично-десятичных чисел.

Суммирование двоично-десяичных чисел можно производить по правилам обычной двоичной арифметики, а затем производить двоично-десятичную коррекцию. Двоично-десятичная коррекция заключается в проверке каждой тетрады на допустимые коды. Если в какой либо тетраде обнаруживается запрещенная комбинация , то это говорит о переполнении. В этом случае необходимо произвести двоично-десятичную коррекцию. Двоично-десятичная коррекция заключается в дополнительном суммировании числа шесть (число запрещенных комбинаций) с тетрадой, в которой произошло переполнение или произошёл перенос в старшую тетраду. Приведём два примера:

Другие виды двоичных кодов:

Целочисленные двоичные коды Представление двоичных чисел в памяти компьютера или микроконтроллера
http://digteh.ru/proc/IntCod.php

Представление чисел в двоичном коде с плавающей запятой Стандартные форматы чисел с плавающей запятой для компьютеров и микроконтроллеров
http://digteh.ru/proc/float/

Запись текстов двоичным кодом Представление текстов в памяти компьютеров и микроконтроллеров
http://digteh.ru/proc/text/

Системы счисления В настоящее время и в технике и в быту широко используются как позиционные, так и непозиционные системы счисления.
http://digteh.ru/digital/SysSchis.php

Автор Микушин А. В. All rights reserved. 2001 . 2020

Основные системы счисления применяемые в станках с ЧПУ и не только

Система счисления – это коды, которые используются для представления чисел числовыми знаками (цифрами). Наибольшее распространение получили позиционные системы счисления. В них запись произвольного числа А, имеющего основание m, представляется в виде полинома:

Здесь а – одна из цифр системы, m – основание системы, n – номер разряда;

При работе с системой счисления основание в большинстве случаев не пишут, а число записывается перечислением всех коэффициентов (символов) полинома:

Запятая, отделяющая дробную часть от целой, используется для фиксации значения каждого разряда в данной последовательности цифр.

Десятичная система счисления

Десятичная система счисления – одна из наиболее распространенных. Ее основание – 10. Использует она десять символов 0, 1, 2, …, 9. Возникновение десятичной системы счисления, согласно историческим сведениям, связано с количеством пальцев на руках.

В десятичной системе цифры 3807,45 представляют собой запись полинома:

в сокращенном виде.

При обычной записи в данной системе указываются только коэффициенты. Однако предполагают при этом, что их вес (значимость) определяется разрядом и различный, занимаемым данной цифрой (коэффициентом). Десятичная система не очень хорошо подходит для реализации в вычислительной техники. Это вызвано тем, что выполнение элемента с десятью различимыми состояниями довольно сложная техническая задача.

Унитарная система счисления

Здесь все проще – она имеет только один цифровой знак – 1. В этой системе можно обрабатывать только целые числа, которые будут представлены набором единиц. Например, число 2 будет представлено как 11, а число 17 как 11111111111111111. Унитарная система счисления очень проста и легко реализуемая – это плюс, но уж очень громоздкая – это минус. Ранее ее активно использовали для записей нужного количества импульсов на барабанах и магнитных лентах. Но из-за громоздкости она не получила широкого применения, ведь необходимо очень много символов для представления числа 4552/10 – 1111…1111…1111…

Другие позиционные системы счисления

Все другие позиционные системы счисления строятся по принципу десятичной системы счисления. Восьмеричная — использует восемь цифр m = 8 и на этом основании строится ее поленом, четверичная использует m = 4, пятеричная m = 5:

При основании m>10 приходится вводить новые символы. Яркий пример – шестнадцатеричная система счисления, состоящая из алфавита десятеричной – 0, 1, 2, …, 9 и дополнительных символов a, b, c, d ,e ,f. Наличие над цифрой черты сигнализирует о том, что численное значение данной цифры равно этому же значению, но необходимо добавить десять. Например, число 175,5/10 в шестнадцатеричной примет вид:

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

В двоичной системе счисления основание m = 2 и используются всего два символа – 1 и 0.Число в двоичной системе записывают полиномом, который может иметь только два значения – один или ноль. Например:

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

Перевод чисел из одной системы счисления в другую

Наиболее простым переводом считают перевод чисел восьмеричного счисления в двоичный, и наоборот. Такой подход довольно широко распространен в вычислительной технике. Для перевода восьмеричного числа в двоичное, его заменяют аналогичным трехразрядным числом (триадой), представленным в двоичном коде, как показано ниже:

Для обратного перевода (из двоичного в восьмеричный), необходимо разделить двоичный код на триады и заменить их восьмеричными цифрами. Если же крайняя правая или левая триады неполные, то нужно будет дописать недостающие нули.

Пример. Нужно перевести восьмеричное число 34,5/8 в двоичное. Для этого разбиваем число на отдельные цифры 3, 4, 5 и заменяем их эквивалентными триадами двоичного кода и в итоге получаем 011 100, 101. Очень часто нули в начале и конце записи не пишут, поэтому вполне можно встретить и такую запись 11100,101.

Еще один пример для перевода двоичного числа 11 010 111, 110 101 в восьмеричное:

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

Двоично-кодированные системы счисления

Определенное неудобство двоичной кодировки заключается в ее громоздкости. Например, количество цифр двоичного кода примерно в 13,3 раза больше, чем такое же число в представлении десятичным кодом. Именно из-за этого в технике довольно часто используют смешанные системы кодирования, такие как двоично-шестнадцатеричную, двоично-восьмеричную, двоично-десятичную. При смешанном кодировании объединяют достоинства нескольких систем, а именно – емкость (для шестнадцатеричных, восьмеричных и десятичных) и двоичное изображение цифр при использовании двоичного кодирования.

В двоично-десятичном коде каждая цифра десятичного числа (0, 1, 2, …,9) записывается двоичным кодом. Для этого используют двоичные разряды – тетрады:

При использовании нормального значения (веса) каждого разряда двоичного кода, то значимость в тетраде разрядов (начинается с левого старшего разряда) составит 2 3 – 2 2 – 2 1 – 2 0 , или же 8421. Исходя из этого, десятичные цифры будут представлены двоичным кодом: 1 — 0001; 2 – 0010, …, остальные коды представлены ниже:

Итак, двоично-десятичный код по существу является десятичным, а по форме двоичным. Ранее такие коды наиболее часто применялись для записи на перфоленты.

Рассмотренная выше двоично-десятичная система еще носит названия взвешенного двоично-десятичного кода 8421. Удобство данного кода хорошее, но имеется один недостаток, а именно – обрабатываться могут не только цифры 0…9, но и числа 10…15, которые используют не всегда и их приходится исключать.

Разработано большое количество кодов с другими наборами весов по разрядам – 2421, 5211, 7421 и многие другие. Также существуют коды, у которых присутствуют отрицательные веса в некоторых разрядах: (6)(4)(-2)(-1) и другие.

Также довольно часто используют для изображения в двоично-десятичных системах десятичных цифр комбинаторные коды, такие как – код Грея однопеременный, 2 из 5, 3 из 5 и другие.

2.Двоично-десятичное кодирование

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

Принцип построения этой системы достаточно прост: каждая десятичная цифра преобразуется прямо в свой десятичный эквивалент из 4 бит, например:

369110=0011 0110 1001 0001DEC:

Преобразуем двоично-десятичное число 1000 0000 0111 0010 в его десятичный эквивалент. Каждая группа из 4 бит преобразуется в её десятичный эквивалент. Получим 1000 0000 0111 0010DЕС = 807210:

Микропроцессоры используют чистые двоичные числа, однако понимают и команды преобразования в двоично-десятичную запись. Полученные двоично-десятичные числа легко представимы в десятичной записи, более понятной людям.

Форматы представления десятичных чисел

В настоящее время распространены два формата представления десятичных чисел в микропроцессорах — упакованный двоично-десятичный код (BCD-Binary-Coded Decimal) и неупакованный десятичный код.

Упакованный BCD-код — это такое представление десятичного числа, когда каждая десятичная цифра представляется 4-х битным двоичным позиционным кодом 8-4-2-1. При этом байт содержит две десятичные цифры. Младшая десятичная цифра занимает правую тетраду (биты 3 : 0), старшая — левую тетраду (биты 7 :4).

Многоразрядные BCD-числа занимают несколько смежных байт. Если число является знаковым, то для представления знака в BCD-формате отводится старшая тетрада старшего байта. Для кодирования знака можно использовать шесть двоичных кодовых комбинаций, которые не используются для представления десятичных цифр. Это коды 1010-1111 (A-F в шестнадцатеричном представлении). Обычно для кодирования знака плюс применяют код 1100 (C), а для знака минус — 1101 (D). На рисунке показано BCD-представление десятичного числа «-12345»:

Неупакованный десятичный код является подмножеством международной таблицы кодирования символов ASCII (Таблица). Видно, что для хранения неупакованных десятичных чисел требуется в два раза больше памяти, так как каждая цифра представляется 8-битным кодом.

Упрощён вывод чисел на индикацию — вместо последовательного деления на 10 требуется просто вывести на индикацию каждый полубайт. Аналогично, проще ввод данных с цифровой клавиатуры.

Для дробных чисел (как с фиксированной, так и с плавающей запятой) при переводе в человекочитаемый десятичный формат и наоборот не теряется точность.

Упрощены умножение и деление на 10, а также округление.

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

  • · Усложнены арифметические операции.
  • · Требует больше памяти.
  • · В двоично-десятичном коде 8421-BCD существуют запрещённые комбинации битов:

Запрещённые в 8421-BCD битовые комбинации

Запрещённые комбинации возникают обычно в результате операций сложения, так как в 8421-BCD используются только 10 возможных комбинаций 4-х битового поля вместо 16. Поэтому, при сложении и вычитании чисел формата 8421-BCD действуют следующие правила:

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

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

При вычитании двоично-десятичных чисел, для каждого полубайта, получившего заём из старшего полубайта, необходимо провести коррекцию, отняв значение 0110.

Операции над двоично-десятичными числами:

Упакованные BCD-числа можно только складывать и вычитать. Для выполнения других действий над ними их нужно дополнительно преобразовывать либо в неупакованный формат, либо в двоичное представление. Из-за того, что упакованные BCD-числа представляют не слишком большой интерес, мы их рассмотрим кратко.

Сложение упакованных BCD-чисел

Вначале разберемся с сутью проблемы и попытаемся сложить два двузначных упакованных BCD-числа.

Сложение упакованных BCD-чисел

142 = 1101 1100 = 220

Как видим, в двоичном виде результат равен 1101 1100 (или 220 в десятичном представлении), что неверно. Это происходит по той причине, что микропроцессор не подозревает о существовании BCD-чисел и складывает их по правилам сложения двоичных чисел. На самом деле, результат в двоично-десятичном виде должен быть равен 0001 0100 0010 (или 142 в десятичном представлении).

Видно, что как и для неупакованных BCD-чисел, для упакованных BCD-чисел существует потребность как-то корректировать результаты арифметических операций.

Микропроцессор предоставляет для этого команду daa:

daa (Decimal Adjust for Addition) — коррекция результата сложения для представления в десятичном виде.

Команда daa преобразует содержимое регистра al в две упакованные десятичные цифры по алгоритму, приведенному в описании команды daa.

Получившаяся в результате сложения единица (если результат сложения больше 99) запоминается в флаге cf, тем самым учитывается перенос в старший разряд.

Аналогично сложению, микропроцессор рассматривает упакованные BCD-числа как двоичные и, соответственно, выполняет вычитание BCD-чисел как двоичных.

Вычитание упакованных BCD-чисел

Выполним вычитание 67-75. Так как микропроцессор

выполняет вычитание способом сложения, то и мы последуем

-8 = 0001 1100 = 28 .

Как видим, результат равен 28 в десятичной системе счисления, что является абсурдом. В двоично-десятичном коде результат должен быть равен 0000 1000 (или 8 в десятичной системе счисления).

При программировании вычитания упакованных BCD-чисел программист, как и при вычитании неупакованных BCD-чисел, должен сам осуществлять контроль за знаком. Это делается с помощью флага cf, который фиксирует заем из старших разрядов.

Само вычитание BCD-чисел осуществляется простой командой вычитания sub или sbb. Коррекция результата осуществляется командой das:

das (Decimal Adjust for Substraction) — коррекция результата вычитания для представления в десятичном виде.

Команда das преобразует содержимое регистра al в две упакованные десятичные цифры по алгоритму, приведенному в описании команды das.

Стандарты кодирования текстов

Разные стандарты кодировки для разных алфавитов Стандарт кодировки, сохраняемый вместе с текстовым файлом, предоставляет информацию, необходимую для того, чтобы отображать текст на экране. Например, в кодировке «кириллица (Windows)» знаку Й соответствует числовое значение 201. При открытии файла, содержащего эту букву, на компьютере, использующем кодировку «кириллица (Windows)», будет прочтено числовое значение 201 и на экране отобразится знак Й.

Однако если тот же самый файл открыть на компьютере, использующем другую кодировку, то он отобразит знак, которому соответствует числовое значение 201, в том стандарте кодировки, который использует данный компьютер по умолчанию. Например, если компьютер использует стандарт кодировки «Западная Европа (Windows)», этот знак в оригинальном файле, созданном в кодировке «кириллицы», будет отображаться как E, а не Й, поскольку в кодировке «Западная Европа (Windows)» значение 201 отображает знак E.

Юникод: единый стандарт кодировки для множества алфавитов

Чтобы избежать проблем, связанных с кодированием и раскодированием файлов, можно сохранять файлы в кодировке Юникод. Юникод включает наборы знаков для большинства языков, которые в наши дни используются на компьютерах. Файлы в кодировке Юникод можно открывать и читать на компьютере с англоязычной системой независимо от того, на каком языке написан текст. Подобным же образом, если использовать англоязычную систему для сохранения файла в кодировке Юникод, файл может включать знаки которые отсутствуют в западноевропейских алфавитах, в частности греческие, кириллические, арабские или японские знаки.

Стандарт представления символов ASCII — это 7-битовое описание кода символа. Поскольку в персональных компьютерах используются байты, состоящие из 8 бит, производители компьютеров часто определяют наборы символов, использующие 256 кодов вместо 128 кодов ASCII. В результате получается «расширенный набор символов» (extended character set), который включает в себя набор символов ASCII и до 128 других символов.

ASCII -коды десятичных цифр

Что такое двоичный и шестнадцатеричный коды

В этой статье объясним вам что такое двоичный и шестнадцатеричный коды.

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

Ранее, в статье «Введение в информатику. Алгоритмы», я кратко пояснил, что любая цифровая техника от простейшего устройства автоматики до компьютера оперирует всего двумя логическими состояниями «ноль» и «единица». Информация хранится в ячейках памяти, которые могут быть «долговременными», а могут быть оперативными – «кратковременными». К долговременным относятся постоянные запоминающие устройства (ПЗУ) на микросхемах, магнитных лентах и дисках не требующие во время хранения информации питающего напряжения (флеш-карта, дискета, или жёсткий диск компьютера). Оперативные ячейки памяти хранят информацию в течение времени, необходимого для проведения вычислений и требуют постоянного питающего напряжения (оперативное запоминающее устройство компьютера, кэш-память микропроцессора). Минимальная ячейка памяти способна хранить единицу информации — один бит, который может принимать значение равное нулю, либо единице. Восемь битов – это уже байт. Если один бит информации может принимать два значения — от 0 до 1, то сочетание нулей и единиц одного байта может принимать 256 значений — от 0 до 255.

Говорят: компьютер имеет 64-х разрядную шину данных. Это означает, что одновременно его информационная шина способна передавать 64 бита информации от одного функционального узла (устройства) компьютера к другому. 64 / 8 бит = 8 байт . Нет смысла говорить о том какой это большой, или маленький объём информации, ведь всё в мире относительно. Следующая единица информации это килобайт – одна тысяча байт. Далее мегабайт – один миллион байт. Далее терабайт – один миллиард байт.

Мой первый компьютер в 1990 году имел оперативную память равную 16 килобайт, а в качестве ПЗУ использовалась магнитофонная кассета, на которой файлы размером больше 20 килобайт записывать не рекомендовалось (сбоили), на всю кассету помещалось не более 400 килобайт. В 1997-м году у меня был компьютер с оперативной памятью 16 мегабайт и 4-х гигабайтным жёстким диском, в 2002-м году — компьютер с оперативной памятью 256 мегабайт и 80-ти гигабайтным жёстким диском, а в 2014-м году у меня компьютер с оперативной памятью 4 гигабайт и жёстким диском (ПЗУ) в один терабайт. Время бежит вперёд, техника тоже прогрессирует. Скоро и эти объёмы памяти будут смешными.

Вернёмся к битам и байтам и определимся что такое двоичный код. Один байт – это 8 бит. Биты в байте располагаются в следующем порядке:

Как и в десятичной системе исчисления, в двоичной системе также принято делить числа на разряды. В десятичном представлении чисел принято писать слева направо — старшие разряды, потом младшие. Взглянув на число, по количеству символов, мы сначала определяем, к какому порядку число относится (единицы, десятки, сотни и т.д.). Потом посмотрев на впереди стоящую цифру, определяем размерность старших разрядов. Потом последовательно переходим на младшие числа (разряды). Это удобно для нашего восприятия. В двоичной системе абсолютно всё также, старший бит (разряд) располагается слева, правее располагается бит (разряд) по младше, и т.д. до самого младшего — первого.

А теперь попробуем понять определение из учебника информатики:

«За единицу количества информации принимается такое количество информации, которое содержится в информационном сообщении, уменьшающем неопределённость знания в 2 раза. Такая единица названа битом»

Бит – это единица информации. Информационное сообщение может состоять из одного бита, двух битов, трёх битов и т.д. до бесконечности.

Один бит информации может принимать 2 значения: 0, или 1. Второй бит информации также может принимать 2 значения: 0, или 1. Но когда биты объединены в одно сообщение, то это сообщение может иметь 4 различных значения – комбинаций состояния битов (значение равное 0, 1, 2 или 3). Третий бит информации также может принимать 2 значения: 0, или 1. В сумме три отдельных бита могут принимать 6 значений, но объединённые в одно информационное сообщение, в зависимости от состояния битов (комбинаций нулей и единиц), само сообщение может принимать 8 различных значений (от 0 до 7). Четвертый бит информации также может принимать 2 значения: 0, или 1. В сумме четыре отдельных бита могут принимать 8 значений, но объединённые в одно информационное сообщение, в зависимости от состояния битов (комбинаций нулей и единиц), само сообщение может принимать 16 значений (от 0 до 15).

Обратите внимание, что добавление каждого нового бита увеличивает варианты состояний (информации) в 2 раза. Как было написано ранее, один бит хранит информацию от 0 до 1 (два логических состояния). Если мы будем использовать 2 бита, то мы увеличим размерность хранящейся информации вдвое – от 0 до 3 (четыре логических состояния). Если мы будем использовать 3 бита, то размерность информации увеличится ещё в два раза – от 0 до 7 (восемь логических состояний). Используя 4 бита, мы увеличиваем размерность информации ещё в два раза – от 0 до 15 (шестнадцать логических состояний). Использование каждого последующего бита увеличивает размерность информации вдвое. Поэтому на многих схемах разрядность битов подписывают 1, 2, 4, 8, 16, 32, 64, и т.д. умножая на 2. Для объяснения описанного, приведена таблица для 4-х разрядов (полубайта):

Чтобы записать любое десятичное число в двоичной системе, или наоборот перевести из двоичной в десятичную, можно воспользоваться следующей табличкой:

Эта табличка используется для размерностей чисел в пределах 2-х байт – от 0 до 65 535. Если Вам необходимо пересчитывать более крупные числа, тогда можете продолжить табличку самостоятельно, учитывая закономерность, что каждый следующий бит, имеет разрядность в два раза больше предыдущего.

Например: Вы хотите определить, как будет выглядеть двоичный код числа 12 345. Берём табличку, добавляем ещё одну строку, назовём её «Состояние битов» и начнём вычислять:

Вычисление производится от старшего бита, старшего байта.

Находим в таблице старший бит (разрядность которого максимальна), но меньше, или равна этому числу. В нашем случае восьмой бит старшего байта имеет разрядность 32 768, это больше числа 12 345, поэтому ставим в табличку 8-го бита «0», тоже самое произойдёт и с 7-м битом. Разрядность 6-го бита 8 192 меньше числа 12 345, поэтому ставим в табличку «1».

После этого делаем вычисление — от искомого числа отнимаем значение 6-го бита: 12 345 – 8 192 = 4 153. Проверяем разрядность следующего пятого бита: 4 096 меньше значения 4 153, тогда ставим «1», и повторяем отнимание: 4 153 – 4 096 = 57. Мы получили число 57. Разрядность 1-4 бита старшего байта и 7-8 бита младшего байта больше числа 57, поэтому ставим в табличку этих битов значения «0». Разрядность 6-го бита – 32 меньше числа 57, поэтому ставим в табличку цифру 1 и производим очередное отнимание: 57 – 32 = 25.

Проверяем разрядность 5-го бита – 16 меньше числа 25, поэтому ставим в табличку цифру 1 и производим очередное отнимание: 25 – 16 = 9.

Проверяем разрядность 4-го бита – 8 меньше числа 9, поэтому ставим в табличку цифру 1 и производим очередное отнимание: 9 – 8 = 1. Разрядность 3-го и 2-го бита младшего байта больше числа 1, поэтому ставим в табличку этих битов значения «0». Разрядность 1-го бита младшего байта равна числу 1, поэтому ставим в табличку этого бита значение «1».

Итак, мы получили двоичный код числа 12 345, который выглядит: 00110000 00111001.

Теперь наоборот, из двоичного кода получим десятичное число. Это намного проще.

Например: у нас имеется двоичное двухбайтное число: 10101010 10101010. Запишем его в нашу таблицу под соответствующие биты:

Нам остается теперь только сложить разрядности всех битов, значение которых равно единице: 2 + 8 + 32 + 128 + 512 + 2 048 + 8 192 + 32 768 = 43 690.

Что же такое шестнадцатеричный код? Это представление двоичного кода десятичными символами и буквами, необходимое разработчику программ для сокращённой записи двоичного кода. Компьютер на нём не работает, люди вычислений не делают. Четыре бита которые в двоичном коде имеют четыре цифры-символа, в шестнадцатеричном коде обозначаются всего лишь одним символом, один байт – двумя символами, два байта – четырьмя символами и т.д. по четыре бита на символ. Таким образом, один байт обозначается двумя символами шестнадцатеричного кода.

Соответствие символов шестнадцатеричного кода двоичному коду приведено в таблице:

Например: десятичное число 12 345, которое мы преобразовали ранее в двоичный код 00110000 00111001, в шестнадцатеричной форме выглядит: 30 39.

Двоичное число 10101010 10101010, которое мы преобразовали ранее в десятичное 43 690, в шестнадцатеричной форме выглядит так: АА АА.

Некоторые недоучки могут сказать: «Как, ведь компьютер только и работает, что в шестнадцатеричном коде!» Ничего подобного. По проводнику адресной шины компьютера, или шины данных может идти «единичка» в виде напряжения, или «нолик» в виде отсутствия напряжения. Это двоичный код. Но в неё никак не загнать символы шестнадцатеричного кода. Это, в отличие от наличия, или отсутствия напряжения, которое можно «потрогать языком» как на батарейке, всего лишь символы, без специальных программ понятные только человеку, а не машине.

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

На первом своём компьютере, я писал маленькие программки в Ассемблере, вперемешку с Бейсиком, переводя в шестнадцатеричный код, после чего сохранял на внешнем носителе – магнитофоне, и лишь потом смотрел, что же получилось. Ассемблер – это язык программирования, который максимально близок к машинному коду ЭВМ. Для его перевода в «цифру», достаточно наименования команд программирования заменить на шестнадцатеричный код, который с помощью прошитого ПЗУ автоматически переводится в двоичный код. В настоящее время программы пишут на языках высокого уровня, которые сам компьютер не понимает без программ интерпретаторов, компиляторов и прочих других «буферных» программ и подпрограмм, которые в свою очередь перекладывают программы в шестнадцатеричный код, а потом аппаратными средствами – в двоичный код. Это является фактором, значительно снижающим быстродействие выполнения программ, так как компьютер выполняет «дополнительные» операции требующие затраты времени, но развитие компьютерной техники в настоящее время с её высокими скоростями обработки информации и обмена позволяет это делать. Как пример, приведу свой сайт, который вы сейчас читаете.

Все странички своего сайта я пишу в xml-овских тегах, с лёгкостью понятных для любых браузеров интернет-пользователей. Мои страницы занимают мизерный объём памяти и быстро открываются. Задержки могут возникать только в моменты обращения к серверу с открытием рисунков и рекламных тизеров. А многие другие владельцы сайтов пишут свои странички, используя шаблоны WordPress. При том же объёме информации, что и у меня, объём их страниц и время открывания браузером значительно больше. В данном случае, WordPress выполняя роль программы-компилятора замедляет работу. Кроме того, он может создавать «ненужные» теги и символы, которые не только замедляют работу браузеров, но и увеличивают размер файлов. Впрочем, если у вас «быстрый» интернет и «быстроходная машина», этого замедления вы и не заметите. Абсолютно также с замедлением работают все программы от операционных систем, до компьютерных игр. А побеждает по скорости та, которая в результате компиляции ближе к машинным кодам — преобразована с языка программирования высокого уровня в машинные коды с минимальными «ненужными» командами.

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

Тимеркаев Борис — 68-летний доктор физико-математических наук, профессор из России. Он является заведующим кафедрой общей физики в Казанском национальном исследовательском техническом университете имени А. Н. ТУПОЛЕВА — КАИ

Комплект вопросов сертификационного экзамена на знание основных механизмов платформы «1С: Предприятие 8» (стр. 18 )

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

6.74 В каком формате хранятся тексты конфигурации и базы данных в системе 1С:Предприятие?

1. Тексты конфигурации и базы данных хранятся в формате UNICODE

2. В зависимости от настроек, заданных при создании информационной базы

3. Нет правильного ответа

6.75 С какой целью тексты конфигурации и базы данных хранятся в формате UNICODE?

1. Формат UNICODE обеспечивает неизменность (независимость от программной платформы операционной системы) представления информации

2. Формате UNICODE позволяет поддерживать различные языки в системе 1С:Предприятие

3. Нет правильного ответа

6.76 Механизмы интернационализации, заложены ...

1. технологическую платформу 1С:Предприятия

2. прикладные решения

3. верны ответы 1 и 2

4. нет правильного ответа

6.77 Что такое код локализации?

1. Строка, состоящая из кода языка и кода страны и идентифицирующая некоторый регион мира

2. Код программного продукта (указывается на регистрационной анкете, документации из комплекта поставки)

3. Параметр форматирования строки для преобразования

4. Her правильного ответа

6.78 Верно ли что в 1С:Предприятие 8 любая текстовая информация может включать одновременно символы различных языков?

1. Да, так как все тексты конфигурации и базы данных хранятся в формате UNICODE

2. В зависимости от настроек, заданных при создании информационной базы

3. Только если это предусмотрено конфигурацией

6.79 Для чего предназначен объект конфигурации «Язык»?

1. Для создания интерфейса программы на разных языках

2. Для создания текстовых документов на разных языках

3. Такого объекта в 1С: Пред приятие 8 не существует

6.80 Каким образом можно сменить язык просмотра (редактирования) конфигурации?

1. С помощью кнопки выбора языка, расположенной в строке состояния справа от кнопки «NUM»

2. Через пункт меню «Конфигурация — Язык редактирования конфигурации»

3. В 1 С:Предприятие такой возможности не существует

4. Верпы ответы 1 и 2

6.81 Какое написание имеют операторы встроенного языка?

1. Только русское написание

2. Только английское написание

3. Русское и английское написание

4. В зависимости от настроек конфигуратора

6.82 Возможно ли использование в одном исходном тексте операторов встроенного языка в русском и английском написании?

1. Только при специальных настройках конфигуратора

2. Да, для этого не требуется изменения каких-либо настроек конфигуратора

3. Нет, так как вариант встроенного языка задается в свойствах конфигурации

6.83 С какой целью используется встроенный язык?

1. Для определения интерфейса программы по умолчанию

2. Для описания (на стадии разработки конфигурации) алгоритмов функционирования прикладной задачи

3. Нет правильного ответа

6.84 Какое написание имеют функции встроенного языка?

1. Только русское написание

2. Только английское написание

3. Русское и английское написание

4. В зависимости от настроек конфигуратора

6.85 Что обозначает параметр Л(L) в форматной строке функции форматирования ЧислоПрописью()?

1. Признак «дробную часть выводить числом/прописью»

2. Количество знаков после запятой

7. Табличная модель прикладного решения

7.1 При настройке ограничения доступа к данным допускается установка нескольких (по числу полей) ограничений:

2. Для права «Изменение»

3. Для права «Добавление»

4. Для права «Удаление»

5. Для всех вышеперечисленных прав

6. Для всех возможных прав

7.2 При настройке ограничения доступа к данным в качестве значений, по которым производится ограничения доступа к данным, могут использоваться:

1. Только значения параметров сеанса

2. Только данные из таблиц (запросов)

3. Значения параметров сеанса и данные из таблиц (запросов)

4. Только значения имеющие типы: Число, Строка, Булево, Дата

7.3 Каким из вышеперечисленных способов можно воспользоваться, чтобы в разделе «Поля» конструктора запросов появились код и наименование справочника?

1. Сначала заполнить раздел «Таблицы», а потом, выбирая нужные объекты из этого раздела, перенести их в раздел «Поля», используя двойной клик девой клавиши мыши

2. Не заполняя раздел «Таблицы», сразу выбирать нужные объекты из таблиц — источников данных раздела «База данных», перенося их в раздел «Поля», используя технологию Drag & Drop. Раздел «Таблицы» заполняется автоматически

3. Сначала заполнить раздел «Таблицы», а потом, выбирая нужные объекты из этого раздела, перенести их в раздел «Поля», используя кнопки па форме «>» «»»

4. Верны ответы I и 3

5. Верны ответы I, 2 и 3

7.4 Для повышения скорости выполнения запроса необходимо:

1. Задавать параметры большинства реальных таблиц

2. Задавать параметры большинства виртуальных таблиц

3. Вместо задания параметров у реальной или виртуальной таблицы использовать отбор, заданный конструкцией языка запросов «ГДЕ»

4. Верны ответы I и 2

7.5 Можно ли при выборе таблицы-источника в раздел «Таблицы» конструктора запросов задавать для нее новое имя (псевдоним)?

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

3. Да, можно, но только если в качестве источника данных выступает виртуальная таблица

4. Верны ответы 1 и 2

5. Верны ответы 1 и 3

7.6 Вложенный запрос может использоваться:

1. В качестве таблицы-источника данных

2. В качестве операнда операций сравнения «В» или «НЕ В» при задании параметров виртуальной таблицы

3. В качестве операнда операций сравнения «В» или «НЕ В» при задании конструкции языка запросов «ГДЕ»

4. Верпы ответы 1, 2 и 3

7.7 Можно ли, используя конструктор запроса, получить итоги по иерархии?

1. Можно, если для группировочного поля указать тип итогов «Элементы и иерархия»

2. Можно, если для группировочного поля указать тип итогов «Только иерархия»

3. Верпы ответы 1 и 2

7.8 На закладке «Условия» конструктора запросов отдельная строка списка условий может быть сформирована:

1. С помощью двойного клика левой клавишей мыши на нужном поле в списке доступных полей

2. Путем переноса нужного поля в список, используя технологию Drag & Drop

3. Нажать кнопку «Добавить». Если условие произвольное, то текст условия можно ввести «вручную»

4. Вызвав контекстное меню, выбрать в нем пункт «Добавить». Возможно использование произвольного выражения

5. Верны все вышеперечисленные ответы

7.9 На закладке «Связи» конструктора запросов можно определить:

1. Соединение таблиц-источников данных и связи между ними

2. Объединение таблиц-источников данных и связи между ними

3. Связи между полями таблицы, получаемой в результате выполнения запроса

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

7.10 При соединении таблиц-источников данных в конструкторе запросов можно:

1. Назначить соединение без указания условия связи

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

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

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

7.11 Создание соединения таблиц-источников данных в конструкторе запросов допускает:

1. Соединение только двух таблиц-источников данных

2. Соединение необходимого количества таблиц-источников данных

3. Соединение только двух таблиц-источников данных, причем флажок «Все» обязательно должен быть проставлен хотя бы у одной из таблиц

4. Соединение необходимого количества таблиц-источников данных, причем флажок «Все» обязательно должен быть проставлен хотя бы у одной из таблиц

7.12 Флажок «Все», устанавливаемый у таблицы, выбранной на закладке «Связи» конструктора запросов означает:

1. Что в результат запроса надо включить все доступные поля этой таблицы

2. Что в результат запроса надо включить все записи этой таблицы

3. Что в результат запроса надо включить все поля и все записи этой таблицы

4. Что результат запроса будет сформирован с учетом всех условий, заданных для соединения таблиц-источников

7.13 На закладке «Объединения/Псевдонимы» конструктора запросов можно:

1. Задать список запросов. В результирующую выборку попадут записи всех указанных запросов

2. Задать имена полей результирующей таблицы

3. Задать имена таблиц-источников данных

4. Верны ответы 1 и 2

5. Верны ответы 1, 2 и 3

7.14 При объединении двух запросов на закладке «Объединения/Псевдонимы» конструктора запросов условие связи между запросами:

Вопрос 76 Механизмы интернационализации, заложены в.

1. технологическую платформу 1С ^Предприятия

2. прикладные решения

3. верны ответы 1 и 2

4. нет правильного ответа

Вопрос 77 Что такое код локализации?

1. Строка, состоящая из кода языка и кода страны и идентифицирующая некоторый регион мира

2. Код программного продукта (указывается на регистрационной анкете, документации из комплекта поставки)

3. Параметр форматирования строки для преобразования

4. Нет правильного ответа

Вопрос 78 Верно ли что в 1С:Предприятие 8 любая текстовая информация может включать одновременно символы различных языков?

1. Да, так как все тексты конфигурации и базы данных хранятся в формате UNICODE

2. В зависимости от настроек, заданных при создании информационной базы

3. Только если это предусмотрено конфигурацией

Вопрос 79 Для чего предназначен объект конфигурации «Язык»?

1. Для создания интерфейса программы на разных языках

2. Для создания текстовых документов на разных языках

3. Такого объекта в 1С:Предприятие 8 не существует

Вопрос 80 Каким образом можно сменить язык просмотра (редактирования) конфигурации?

1. С помощью кнопки выбора языка, расположенной в строке состояния справа от кнопки «NUM»

2. Через пункт меню «Конфигурация — Язык редактирования конфигурации»

3. В 1С Предприятие такой возможности не существует

4. Верны ответы 1 и 2

Вопрос 81 Какое написание имеют операторы встроенного языка?

1. Только русское написание

2. Только английское написание

3. Русское и английское написание

4. В зависимости от настроек конфигуратора

Вопрос 82 Возможно ли использование в одном исходном тексте операторов встроенного языка в русском и английском написании?

1. Только при специальных настройках конфигуратора

2. Да, для этого не требуется изменения каких-либо настроек конфигуратора

3. Нет, так как вариант встроенного языка задается в свойствах конфигурации

Вопрос 83 С какой целью используется встроенный язык?

1. Для определения интерфейса программы по умолчанию

2. Для описания (на стадии разработки конфигурации) алгоритмов функционирования прикладной задачи

3. Нет правильного ответа

Вопрос 84 Какое написание имеют функции встроенного языка?

1. Только русское написание

2. Только английское написание

3. Русское и английское написание

4. В зависимости от настроек конфигуратора

Вопрос 85 Что обозначает параметр Л(1_) в форматной строке функции форматирования ЧислоПрописью()?

1. Признак «дробную часть выводить числом/прописью»

Значение двоичного кода – почему компьютеры работают с единицами и нулями

Компьютеры не понимают слов и цифр так, как это делают люди. Современное программное обеспечение позволяет конечному пользователю игнорировать это, но на самых низких уровнях ваш компьютер оперирует двоичным электрическим сигналом, который имеет только два состояния: есть ток или нет тока. Чтобы «понять» сложные данные, ваш компьютер должен закодировать их в двоичном формате.

Двоичная система основывается на двух цифрах – 1 и 0, соответствующим состояниям включения и выключения, которые ваш компьютер может понять. Вероятно, вы знакомы с десятичной системой. Она использует десять цифр – от 0 до 9, а затем переходит к следующему порядку, чтобы сформировать двузначные числа, причем цифра из каждого следующего порядка в десять раз больше, чем предыдущая. Двоичная система аналогична, причем каждая цифра в два раза больше, чем предыдущая.

Подсчет в двоичном формате

В двоичном выражении первая цифра равноценна 1 из десятичной системы. Вторая цифра равна 2, третья – 4, четвертая – 8, и так далее – удваивается каждый раз. Добавление всех этих значений даст вам число в десятичном формате.

Учет 0 даёт нам 16 возможных значений для четырех двоичных битов. Переместитесь на 8 бит, и вы получите 256 возможных значений. Это занимает намного больше места для представления, поскольку четыре цифры в десятичной форме дают нам 10000 возможных значений. Конечно, бинарный код занимает больше места, но компьютеры понимают двоичные файлы намного лучше, чем десятичную систему. И для некоторых вещей, таких как логическая обработка, двоичный код лучше десятичного.

Следует сказать, что существует ещё одна базовая система, которая используется в программировании: шестнадцатеричная. Хотя компьютеры не работают в шестнадцатеричном формате, программисты используют её для представления двоичных адресов в удобочитаемом формате при написании кода. Это связано с тем, что две цифры шестнадцатеричного числа могут представлять собой целый байт, то есть заменяют восемь цифр в двоичном формате. Шестнадцатеричная система использует цифры 0-9, а также буквы от A до F, чтобы получить дополнительные шесть цифр.

Почему компьютеры используют двоичные файлы

Короткий ответ: аппаратное обеспечение и законы физики. Каждый символ в вашем компьютере является электрическим сигналом, и в первые дни вычислений измерять электрические сигналы было намного сложнее. Было более разумно различать только «включенное» состояние, представленное отрицательным зарядом, и «выключенное» состояние, представленное положительным зарядом.

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

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

Вот схема типичного транзистора:

По сути, он позволяет току течь от источника к стоку, если в воротах есть ток. Это формирует двоичный ключ. Производители могут создавать эти транзисторы невероятно малыми – вплоть до 5 нанометров или размером с две нити ДНК. Это то, как работают современные процессоры, и даже они могут страдать от проблем с различением включенного и выключенного состояния (хотя это связано с их нереальным молекулярным размером, подверженным странностям квантовой механики).

Почему только двоичная система

Поэтому вы можете подумать: «Почему только 0 и 1? Почему бы не добавить ещё одну цифру?». Хотя отчасти это связано с традициями создания компьютеров, вместе с тем, добавление ещё одной цифры означало бы необходимость выделять ещё одно состояние тока, а не только «выключен» или «включен».

Проблема здесь в том, что если вы хотите использовать несколько уровней напряжения, вам нужен способ легко выполнять вычисления с ними, а современное аппаратное обеспечение, способное на это, не жизнеспособно как замена двоичных вычислений. Например, существует, так называемый, тройной компьютер, разработанный в 1950-х годах, но разработка на том и прекратилась. Тернарная логика более эффективна, чем двоичная, но пока ещё нет эффективной замены бинарного транзистора или, по крайней мере, нет транзистора столь же крошечных масштабов, что и двоичные.

Причина, по которой мы не можем использовать тройную логику, сводится к тому, как транзисторы соединяются в компьютере и как они используются для математических вычислений. Транзистор получает информацию на два входа, выполняет операцию и возвращает результат на один выход.

Таким образом, бинарная математика проще для компьютера, чем что-либо ещё. Двоичная логика легко преобразуется в двоичные системы, причем True и False соответствуют состояниям Вкл и Выкл .

Бинарная таблица истинности, работающая на двоичной логике, будет иметь четыре возможных выхода для каждой фундаментальной операции. Но, поскольку тройные ворота используют три входа, тройная таблица истинности имела бы 9 или более. В то время как бинарная система имеет 16 возможных операторов (2^2^2), троичная система имела бы 19683 (3^3^3). Масштабирование становится проблемой, поскольку, хотя троичность более эффективна, она также экспоненциально более сложна.

Кто знает? В будущем мы вполне возможно увидим тройничные компьютеры, поскольку бинарная логика столкнулась с проблемами миниатюризации. Пока же мир будет продолжать работать в двоичном режиме.

ДВОИЧНО-ДЕСЯТИЧНАЯ СИСТЕМА

Двоично-десятичная система счисления. Десятичные цифры от 0 до 9 заменяются представляющими их двоичными тетрадами: 0=0000, 1=0001, 2=0010, 3=0011, 4=0100, 5=0101, 6=0110, 7=0111, 8=1000 и 9=1001. Такая запись очень часто используется как промежуточный этап перевода числа из десятичной системы в двоичную или обратно. Так как 10 не является точной степенью 2, то используются не все 16 тетрад, а алгоритмы арифметических операций над многозначными числами здесь более сложны, чем в основных системах счисления. И тем не менее, двоично-десятичная система счисления применяется даже на этом уровне во многих микрокалькуляторах и некоторых компьютерах (в частности, «Ямаха» стандарта MSX).

Поскольку человеку наиболее привычны представление и арифметика в десятичной системе счисления, а для компьютера — двоичное представление и двоичная арифметика, была введена компромиссная система двоично-десятичной записи чисел. Такая система чаще всего применяется там, где существует необходимость частого использования процедуры десятичного ввода-вывода. (электронные часы, калькуляторы, АОНы, и т.д.). В таких устройсвах не всегда целесообразно предусматривать универсальный микрокод перевода двоичных чисел в десятичные и обратно по причине небольшого объема программной памяти.

Принцип построения этой системы достаточно прост: каждая десятичная цифра преобразуется прямо в свой десятичный эквивалент из 4 бит, например: 369110=0011 0110 1001 0001DEC:

Десятичное число 3 6 9 1 Двоично-десятичное число 0011 0110 1001 0001

Преобразуем двоично-десятичное число 1000 0000 0111 0010 в его десятичный эквивалент. Каждая группа из 4 бит преобразуется в её десятичный эквивалент. Получим 1000 0000 0111 0010DEC = 807210:

Двоично-десятичное число 1000 0000 0111 0010 Десятичное число 8 0 7 2

Микропроцессоры используют чистые двоичные числа, однако понимают и команды преобразования в двоично-десятичную запись. Полученные двоично-десятичные числа легко представимы в десятичной записи, более понятной людям.

Преобразование двоичных чисел в двоично-десятичные

Арифметико-логическое устройство AVR-микроконтроллеров (как и других микропроцессоров) выполняет элементарные арифметические и логические операции над числами, представленными в двоичном коде. В двоичном коде считываются результаты преобразования АЦП, в двоичном коде (в формате целых чисел или чисел с плавающей точкой) удобно выполнять обработку результатов измерения. Однако, когда окончательный результат отображается на индикаторе, он должен быть преобразован в десятичный формат, удобный для восприятия человеком.

В данном разделе рассматриваются программы преобразования двоичных чисел в двоично-десятичные.

1. Форматы представления десятичных чисел

В настоящее время распространены два формата представления десятичных чисел в микропроцессорах — упакованный двоично-десятичный код (BCD-Binary-Coded Decimal) и неупакованный десятичный код [1].

Упакованный BCD-код — это такое представление десятичного числа, когда каждая десятичная цифра представляется 4-х битным двоичным позиционным кодом 8-4-2-1. При этом байт содержит две десятичные цифры. Младшая десятичная цифра занимает правую тетраду (биты 3 : 0), старшая — левую тетраду (биты 7 : 4). Многоразрядные BCD-числа занимают несколько смежных байт. Если число является знаковым, то для представления знака в BCD-формате отводится старшая тетрада старшего байта. Для кодирования знака можно использовать шесть двоичных кодовых комбинаций, которые не используются для представления десятичных цифр. Это коды 1010-1111 (A-F в шестнадцатеричном представлении). Обычно для кодирования знака плюс применяют код 1100 (С), а для знака минус — 1101 (D).

Неупакованный десятичный код является подмножеством международной таблицы кодирования символов ASCII (Таблица 1). Видно, что для хранения неупакованных десятичных чисел требуется в два раза больше памяти, так как каждая цифра представляется 8-битным кодом. Таблица 1: ASCII-коды десятичных цифр

2. Преобразование целых 16-битных чисел в двоично-десятичные числа

На сайте www.atmel.com предлагается программа «bin2bcd16» для преобразования целых 16-битных двоичных чисел в двоично-десятичные упакованные числа. В данной статье рассматривается программа «bin16bcd5» (см. Приложение, Программа 1), написанная Терешкиным А. В. согласно алгоритму, изложенному в [1], и выполняющая ту же задачу. Последняя программа по быстродействию, длине кода и количеству используемых регистров оказалась более эффективной, чем первая.

Алгоритм программы «bin16bcd5» заключается в следующем. Предположим, что имеется целое беззнаковое 16-битное число (диапазон от 0 до 65535). Очевидно, что необходимо найти 5 десятичных цифр. Способ преобразования заключается в том, чтобы, вычитая из исходного числа число 10000, сначала определить десятичную цифру десятков тысяч. Затем находится цифра тысяч последовательным вычитанием числа 1000 и т. д. Вычитание каждый раз производится до получения отрицательной разности с подсчетом числа вычитаний. При переходе к определению каждого следующего десятичного разряда в регистрах исходного числа восстанавливается последняя положительная разность. После того, как будет найдена десятичная цифра десятков, в регистрах исходного числа останется десятичная цифра единиц.

Программа «bin16ASCII5» (см. Приложение, Программа 2) преобразует целое двоичное 16-битное число в десятичное неупакованное число. При этом используется тот же алгоритм.

3. Преобразование двоичной дроби в двоично-десятичную дробь

Двоичная дробь, по определению, представляется следующим выражением:

0.A-1A-2 . A-m = A-1*2-1 + A-2*2-2 + . A-m*2-m

Из этого представления следует алгоритм преобразования (Рис. 2), который содержит m шагов. На каждом шаге к двоично-десятичному результату прибавляется очередная двоичная цифра и весь результат делится на 2.

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

Сложить эту цифру с двоично-десятичным числом означает, что ее нужно поместить в разряд единиц двоично-десятичного числа, откуда при последующем делении на два цифра A-i сдвинется в старший разряд старшей тетрады десятичной дроби. При программировании мы можем представлять, что разрядом единиц десятичной дроби является бит переноса С.

При делении на два двоично-десятичного упакованного числа, так же как и при делении двоичного числа, его сдвигают вправо на один разряд. При этом на два делится каждая тетрада, то есть каждая десятичная цифра. При делении четной десятичной цифры в соответствующем разряде снова получается десятичная цифра, и никакой коррекции не требуется. При делении на 2 нечетной десятичной цифры остаток, равный 5, должен быть добавлен к более младшему десятичному разряду, но на самом деле при двоичном сдвиге в более младшую тетраду добавляется число 8 (вес старшего разряда тетрады). Поэтому требуется коррекция результата, которая заключается в вычитании числа 3 из содержимого тех тетрад, которые после сдвига вправо имеют установленные старшие разряды.

4. Преобразование чисел с плавающей точкой в двоично-десятичные числа

Представление чисел с плавающей точкой имеет следующий вид:

где М — двоичная мантисса числа, П — двоичный порядок числа.

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

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

Особенности разработки при локализации

Опубликовано:
22 декабря 2020 в 11:32

В данной статье хочу описать типы строк локализации по месту их использования, объекты системы DIRECTUM для строк локализации, в каких компонентах системы можно использовать строки локализации, а также опишу несколько вариантов локализации компонент, в которых нет возможности указывать строки локализации.

Для отображения текстовых элементов пользовательского интерфейса системы на разных языках в системе используются строки локализации. Задание значений локализуемых строк производится в компоненте Словарь локализации. Для возможности работы системы в английском интерфейсе в поставку должен входить модуль Поддержка английского языка пользовательского интерфейса.

Типы строк локализации

Локализуемые строки системы по месту их задания бывают следующих типов:

Локализуемые строковые реквизиты

Это значения определенных строковых реквизитов некоторых компонент системы, перечень компонент и их реквизитов приведен ниже в таблице. В таблице также приведен префикс элемента, который автоматически определяется от места задания локализуемой строки.

Компонента разработчика

Место задания (реквизит/свойство)

Префикс

Заголовок в карточке типа справочника

Заголовок в ед. числе в карточке типа справочника

Заголовки в таблице «Реквизиты»

Заголовки в таблице «Представления»

Типы карточек электронных документов

Заголовок в карточке типа карточки электронного документа

Заголовки в таблице «Реквизиты»

Подсказки к «Действиям»

Заголовки в таблице «Представления»

Заголовок в карточке диалога

Заголовки в таблице «Реквизиты»

Описание в карточке отчета

Заголовок в карточке сценария

Пример локализуемого строкового реквизита — Заголовок в компоненте Типы справочников

Наименования реквизитов типа признак

Это наименования значений реквизитов типа «Признак». Префикс создаваемой строки локализации «PICK». Например, для реквизита справочников Состояние записи значения Действующая/Закрытая;

Локализуемые свойства редактора форм

Это заголовки элементов форм типов справочников, типов карточек документов и диалогов (ниже приведен список локализуемых элементов форм)

Компонента разработчика

Место задания (реквизит/свойство)

Префикс

Заголовок для элементов формы типа «Поле», «Многострочное поле», «Поле с кнопкой», «Поле выбора записей»

Заголовок для элементов формы типа «Закладка»

Заголовок для элементов формы типа «Группа»

Заголовок для элементов формы типа «Кнопка»

Заголовок для элементов формы типа «Колонка таблицы»

Заголовок для элементов формы типа «Гиперссылка», «Изображение», «Веб-браузер», «Метка», «Выпадающий список», «Флажок», «Группа переключателей»; подсказка для элемента формы типа «Гиперссылка» и элемента ленты «Кнопка»

Пример локализуемого свойства редактора форм:

Текстовые сообщения

Это текстовые сообщения, генерируемые пользователю в ISBL-коде.

Связь локализуемых строк с записями Словаря локализации осуществляется двумя способами:

  • посредством выбора из Словаря локализации – для локализуемых строк типа «Локализуемые строковые реквизиты», «Наименования реквизитов типа признак» и «Локализуемые свойства редактора форм»;
  • посредством вызова специальных ISBL-функций – для локализуемых строк типа «Текстовые сообщения»:
  • LoadString(Code; GroupCode; LanguageCode) – возвращает локализованную строку с кодом Code из группы строк с кодом GroupCode;
  • LoadStringFmt(Code; GroupCode; LanguageCode; Args) – возвращает отформатированную локализованную строку с кодом Code из группы строк с кодомGroupCode.
  • LanguageCode определяет язык, для которого должно быть считано значение записи Словаря локализации. Если этот параметр опущен, то будет использоваться тот язык системы, который установил пользователь.

Объекты системы DIRECTUM для строк локализации

Для доступа к настройкам локализации в системе используется объект ILocalization. Используя данный объект можно:

  • получить значение локализованной строки с помощью метода GetString.
  • получить и задать текущий язык системы с помощью свойства CurrentLanguage.Код текущего языка считывается из профиля пользователя.

Примечание: Не рекомендуется устанавливать текущий язык системы с помощью свойства CurrentLanguage. Для изменения текущего языка системы следует воспользоваться компонентой Установка текущего языка.

  • получать информацию о параметрах локализации системы с помощью свойств IsMultiLanguageSystem, PrimaryLanguage, SupportedLanguages.
  • установить региональные настройки для приложения в обход региональных настроек пользователя, заданных в операционной системе с помощью свойства Locale.

В базе данных информация о списках языков локализации хранится в таблице SBSupportedLanguages, информация о строках данные о локализации текстовых элементов интерфейса хранятся в таблице SBLocalizedData и информация о дате последнего обновления групп локализации хранятся в таблице SBLocalizationSysData.

Особенности использования строк локализации

Учет локализации на формах

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

В качестве примера можно рассмотреть случай, когда заголовок поля From сместился на форме из-за локализации. В русской локализации поле называется «С». Как видно, длины слов «С» и «From» отличаются. В следствие чего получилось смещение, представленное на рисунке ниже:

В редакторе форм можно быстро проверить расположение заголовков полей для разной локализации с помощью элемента на ленте Локализация.

Учет локализации в типовых маршрутах

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

Для формирования тем задач, заданий и уведомлений c локализацией нужно прописать код при старте задачи или задания/уведомления, который подставляет значение из строки локализации:

Для формирования результатов выполнения и текста по умолчанию с локализацией можно воспользоваться одним из способов:

  1. в схеме типового маршрута у блока в заголовке результата выполнения и тексте по умолчанию указать только английский заголовок;
  2. в схеме типового маршрута у блока в заголовке результата выполнения и тексте по умолчанию указать русский и английский заголовок через слеш;
  1. создать прикладной блок и для него настроить результаты выполнения и текст по умолчанию с привязкой к Словарю локализации

Учет локализации в мастерах действиях

В мастерах действиях не предусмотрено использование Словаря локализации. Обойти данный момент можно несколькими способами:

  1. указать имена этапов, описание этапов, заголовки элементов окна этапа, наименования значений признаков только на английском языке;
  2. указать имена этапов, описание этапов, заголовки элементов окна этапа, наименования значений признаков на русском и английском языке через слеш.

Пример одного из этапов мастера действий:

Пример параметра мастера действий с типом «Признак»:

  1. создать этапы, параметры мастера действий как на русском, так и английском языке. Для этапов использовать параметры на соответствующем языке. От локализации пользователя показывать этапы на русском языке или на английском.

Учет локализации в строковых реквизитах

Для реквизитов с типом «Строка» нельзя использовать строки локализации. Обходные решения:

1) пользователь указывает данные на русском и английском языке через слеш;

2) пользователь указывает данные только на английском языке;

3) подменять реквизиты на форме карточки от локализации текущего пользователя;

4) для справочников использовать несколько представлений;

5) дублировать реквизиты, т.е. заводить реквизиты для каждого языка.

Что следует учесть при использовании локализации

1) Учитывайте в разработке, что предопределенные переменные YES_VALUE и NO_VALUEне локализуются, т.е. их значения всегда равны ДА и НЕТ соответственно.

2) При использовании локализации не забывайте переводить все отображаемые пользователю сообщения.

3) Учитывайте увеличение трудоемкости при локализации, в среднем она возрастает примерно на 10-50%, если перевод предоставляется заказчиком, и на 20-100%, если перевод осуществляется собственными силами.

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

Илон Маск рекомендует:  Что такое код imagecolorexactalpha
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL