32 Битное целое число

Целое, целочисленный тип данных (англ. Integer ), в информатике — один из простейших и самых распространённых типов данных в языках программирования. Служит для представления целых чисел.

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

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

Количество чисел в машинном изображении множества целых чисел зависит от длины машинного слова, обычно выражаемой в битах. Например, при длине машинного слова 1 байт (8 бит) диапазон представимых целых чисел со знаком от −128 до 127. В беззнаковом формате байтовое представление числа будет от 0 до 255 (2 8 — 1). Если используется 32-разрядное машинное слово, то целое со знаком будет представлять значения от −2 147 483 648 (-2 31 ) до 2 147 483 647 (2 31 −1); всего 1 0000 000016 (4 294 967 29610) возможных значений.

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

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

Содержание

Представление [ править | править код ]

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

Многие языки программирования предлагают выбор между короткими (англ. short ), длинными (англ. long ) и целыми стандартной длины. Длина стандартного целого типа, как правило, совпадает с размером машинного слова на целевой платформе. Для 16-разрядных операционных систем — этот тип (int) составляет 2 байта и совпадает с типом short int (можно использовать как short, опуская слово int), для 32-разрядных операционных систем он будет равен 4 байтам и совпадает с длинным целым long int (можно использовать как long, опуская слово int), и в этом случае будет составлять 4 байта. Короткое целое short int, для 16-разрядных операционных систем, 32-разрядных операционных систем, и для большинства 64-разрядных операционных систем составляет — 2 байта. Также в некоторых языках может использоваться тип данных двойное длинное long long, который составляет 8 байт.

Для 64-разрядных операционных систем, учитывая разность моделей данных (LP64, LLP64, ILP64), представление целого типа на разных моделях данных может отличаться между собой. Тип int и long может составлять как 4, так и 8 байт.

Стоит отметить, что каждый язык программирования реализует свою сигнатуру представления целых чисел, которая может отличаться от международных стандартов, но обязана его/их поддерживать. К примеру можно отнести кросс-платформенную библиотеку Qt, где целое представляется типом qintX и quintX, где X-8,16,32,64.

Целые типы подразделяются на беззнаковые (англ. unsigned ) и знаковые (англ. signed ).

Беззнаковые целые [ править | править код ]

Беззнаковые целые представляют только неотрицательные числа, при этом все разряды кода используются для представления значения числа и максимальное число соответствует единичным значениям кода во всех разрядах: 111…111. m-байтовая переменная целого типа без знака, очевидно, принимает значения от 0 до +2 8m −1.

В C и C++ для обозначения беззнаковых типов используется префикс unsigned . В C# в качестве показателя беззнаковости используется префикс u (англ. unsigned). Например, для объявления беззнакового целого, равного по размеру одному машинному слову используется тип uint .

Беззнаковые целые, в частности, используются для адресации памяти, представления символов.

Иногда в литературе [1] встречаются рекомендации не использовать тип беззнаковые целые, поскольку он может быть не реализован процессором компьютера, однако вряд ли этот совет следует считать актуальным — большинство современных процессоров (в том числе x86-совместимые [2] ) одинаково хорошо работают как со знаковыми, так и с беззнаковыми целыми.

В некоторых языках, например Java, беззнаковые целые типы (за исключением символьного) отсутствуют [3] .

Неправильное использование беззнаковых целых может приводить к неочевидным ошибкам из-за возникающего переполнения [4] . В приведённом ниже примере использование беззнаковых целых в цикле в C и C++ превращает этот цикл в бесконечный:

Целые со знаком [ править | править код ]

Существует несколько различных способов представления целых значений в двоичном коде в виде величины со знаком (англ.) русск. . В частности можно назвать прямой и обратный коды. Знак кодируется в старшем разряде числа: 0 соответствует положительным, а 1 отрицательным числам.

Могут быть использованы и более экзотические представления отрицательных чисел, такие, как, например, система счисления по основанию −2. [5]

Однако для большинства современных процессоров обычным представлением чисел со знаком является дополнительный код. Максимальное положительное число представляется двоичным кодом 0111…111, максимальное по модулю отрицательное кодом 1000…000, а код 111…111 соответствует −1. Такое представление чисел соответствует наиболее простой реализации арифметических логических устройств процессора на логических вентилях и позволяет использовать один и тот же алгоритм сложения и вычитания как для беззнаковых чисел, так и для чисел со знаком (отличие — только в условиях, при которых считается, что наступило арифметическое переполнение).

Читайте также:  Успокоительные в каплях без вкуса и запаха

m-байтовая переменная целого типа со знаком принимает значения от −2 8m-1 до +2 8m-1 −1.

Предельные значения для разных разрядностей [ править | править код ]

Ниже представлена таблица предельных значений десятичных чисел для разных разрядностей при кодировании дополнительным кодом. В столбце «Максимальное десятичное» сначала идёт максимальное значение целого без знака, а под ним минимальное и максимальное целое со знаком.

Битов Байтов Дв. слов Максимальное десятичное Дес. цифр
4 ½ 15
−8
+7
2
1
1
8 1 ¼ 255
−128
+127
3
3
3
16 2 ½ 65535
−32768
+32767
5
5
5
24 3 ¾ 16777215
−8388608
+8388607
8
7
7
32 4 1 4294967295
−2147483648
+2147483647
10
10
10
48 6 281474976710655
−140737488355328
+140737488355327
15
15
15
64 8 2 18446744073709551615
−9223372036854775808
+9223372036854775807
20
19
19
96 12 3 79228162514264337593543950335
−39614081257132168796771975168
+39614081257132168796771975167
29
29
29
128 16 4 340282366920938463463374607431768211455
−170141183460469231731687303715884105728
+170141183460469231731687303715884105727
39
39
39
256 32 8 115792089237316195(…)584007913129639935
−57896044618658097(…)792003956564819968
+57896044618658097(…)792003956564819967
78
77
77
512 64 16 13407807929942597099(…)946433649006084095
−6703903964971298549(…)973216824503042048
+6703903964971298549(…)973216824503042047
155
154
154
1024 128 32 179769313486231590(…)356329624224137215
−89884656743115795(…)678164812112068608
+89884656743115795(…)678164812112068607
309
308
308
2048 256 64 32317006071311007(…)853611059596230655
−16158503035655503(…)926805529798115328
+16158503035655503(…)926805529798115327
617
617
617
4096 512 128 1044388881413152506(…)708340403154190335
−522194440706576253(…)354170201577095168
+522194440706576253(…)354170201577095167
1234
1233
1233
8192 1024 256 1090748135619415929(…)505665475715792895
−545374067809707964(…)252832737857896448
+545374067809707964(…)252832737857896447
2467
2466
2466
16384 2048 512 1189731495357231765(…)027290669964066815
−594865747678615882(…)513645334982033408
+594865747678615882(…)513645334982033407
4933
4932
4932
32768 4096 1024 1415461031044954789(…)668104633712377855
−707730515522477394(…)334052316856188928
+707730515522477394(…)334052316856188927
9865
9864
9864
65536 8192 2048 2003529930406846464(…)587895905719156735
−1001764965203423232(…)793947952859578368
+1001764965203423232(…)793947952859578367
19729
19729
19729
131072 16384 4096 4014132182036063039(…)812318570934173695
−2007066091018031519(…)906159285467086848
+2007066091018031519(…)906159285467086847
39457
39457
39457
262144 32768 8192 16113257174857604736(…)605349934298300415
−8056628587428802368(…)302674967149150208
+8056628587428802368(…)302674967149150207
78914
78913
78913
524288 65536 16384 259637056783100077(…)364528226185773055
−129818528391550038(…)182264113092886528
+129818528391550038(…)182264113092886527
157827
157827
157827
1048576 131071 32767 67411401254990734(…)119068940335579135
−33705700627495367(…)559534470167789568
+33705700627495367(…)559534470167789567
315653
315653
315653

Операции над целыми [ править | править код ]

Арифметические операции [ править | править код ]

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

  • Сравнение (англ. comparison ). Здесь применимы соотношения «равно» (« = »; « == »; « eq »), «не равно» (« != »; « <> »; « ne »), «больше» (« > »; « gt »), «больше или равно» (« >= »; « ge »), «меньше» (« »; « lt ») и «меньше или равно» (« »; « le »).
  • Инкремент (англ.increment ; « ++ ») и декремент (англ.decrement ; « — ») — арифметическое увеличение или уменьшение числа на единицу. Выделено в отдельные операции из-за частого использования с переменными-счётчиками в программировании.
  • Сложение (англ.addition ; « + ») и вычитание (англ.subtraction ; « – »).
  • Умножение (англ.multiplication ; « * »).
  • Деление (англ.division ; « / »; « ») и получение остатка от деления (англ.modulo ; « % »). Некоторые процессоры (например, архитектуры x86) позволяют производить обе эти операции за одну инструкцию.
  • Инверсия знака (англ.negation ) и получение абсолютного значения (англ.absolute ).
  • Получение знака. Результатом такой операции обычно является 1 для положительных значений, −1 — для отрицательных и 0 — для нуля.
  • Возведение в степень ( «^» ).

В некоторых языках программирования для лаконичности есть операторы, которые позволяют производить арифметическую операцию с присвоением. Например, « += » складывает текущее значение переменной слева с выражением справа и помещает результат в исходную переменную. Так же в некоторых языках и средах доступна совмещённая операция MulDiv, которая умножает на одно число, а потом делит результат на второе.

Обычно самыми дорогими по скорости операциями являются умножение и деление (получение остатка от деления).

В памяти компьютера для хранения целых чисел обычно отводятся ячейки фиксированного объёма. Из-за этого операции увеличения и уменьшения значений могут приводить к переполнению, что оборачивается искажением результата. Некоторые языки программирования позволяют производит вызов исключения в таких случаях. Кроме этого, можно определять поведение при переполнении:

  • Циклическая операция (обычно происходит по умолчанию). Например, если сделать инкремент 8-битного беззнакового значения 255, то получится 0.
  • Операция с насыщением. Если будет достигнут предел, то конечным значением будет это предельное. Например, если к 8-битному беззнаковому числу 250 прибавить 10, то получится 255. Сложение, вычитание и умножение с насыщением обычно применяется при работе с цветом.

Побитовые операции [ править | править код ]

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

  • Битовый сдвиг влево с дополнением нулями аналогичен умножению числа на степень двойки (количество бит сдвига соответствует степени двойки).
  • Битовый сдвиг вправо аналогичен делению на степень двойки (количество бит сдвига соответствует степени двойки). Некоторые языки программирования и процессоры поддерживают арифметический сдвиг, который позволяет сохранять знак у целых со знаком (сохраняется значение старшего бита).
  • У целых со знаком знак можно узнать по старшему биту (у отрицательных он установлен).
  • Чтение и установка младшего бита позволяет управлять чётностью (у нечётных чисел он установлен).
  • Побитовое «И» над определённым количеством младших бит позволяет узнать остаток от деления на степень двойки (степень соответствует количеству бит).
  • Побитовое «ИЛИ» над определённым количеством младших бит и последующий инкремент округляет число на значение, равное степени двойки (степень соответствует количеству бит) — используется для выравнивания адресов и размеров на определённое значение.

Работа со строками [ править | править код ]

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

Ниже перечислены некоторые из представлений чисел строкой.

  • Десятичное число (англ. decimal ). При получении строки обычно можно задать разделители разрядов, количество знаков (добавляются лидирующие нули, если их меньше) и обязательное указание знака числа.
  • Число в системе счисления, которое является степенью двойки. Самые частые: двоичное (binary англ. binary ), восьмеричное (англ. octal ) и шестнадцатеричное (англ. hexadecimal ). При получении строки обычно можно задать разделители групп цифр и минимальное количество цифр (производится дополнение нулями, если их меньше). Так как эти представления чаще всего используются в программировании, то здесь обычно доступны соответствующие опции. Например, указание префикса и постфикса для получения значения в соответствии с синтаксисом языка. Для 16-ричных актуально указание регистра символов, а также обязательное добавление нуля, если первая цифра представлена буквой (чтобы число не определялось как строковый идентификатор).
  • Римское число (англ. roman ).
  • Словесное представление (в том числе сумма прописью) — число представляется словами на указанном натуральном языке.
Читайте также:  Что такое рендеры в недвижимости

Перечислимый тип [ править | править код ]

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

Например, в языке Python логический тип является подтипом целого и использует имена False и True, которые при приведении к целому получают значения 0 и 1 соответственно [6] .

Предположим, мы говорим о 32-битной системе.

PHP не поддерживает unsigned INT. Это означает, что значение INT должно составлять от -2,147,483,648 до 2,147,483,647. И INT занимает 4 байта для хранения значения, длина которого равна 32 битам.

Значит ли это, что у меня есть только 31 бит для значения и 1 бит для знака? Или я могу использовать целые 32 бита для хранения значения?

Вы используете все 32 бита. Просто функции вывода по умолчанию интерпретируют его как целое число со знаком. Если вы хотите отобразить значение «raw», используйте:

Поскольку PHP обрабатывает целые числа, подписанные внутри, однако, вы можете использовать только битовую арифметику, но не добавление / умножение и т. Д., Если вы ожидаете, что они будут вести себя как беззнаковые int.

Насколько я знаю, в 32-битной системе наибольшее положительное целое число – это значения 2147483647 выше, будут значения float, так как значение float в php может принимать значения до 10000000000000.

Прежде всего, если вы хотите делать вычисления с огромными числами (например, более 10k), вы должны использовать произвольный модуль точности bcmath .

Во-вторых, официальная реализация php использует внутреннее дополнение Two для представления чисел, как и практически всех других компиляторов и интерпретаторов. Поскольку энтропия знакового бита (если вы считаете 0 положительным [1] ) равна 1, а энтропия 31 бита – ну, 31, вы можете сохранить 2 32 = 4 294 967 296 различных значений. Как вы их интерпретируете, зависит ваше приложение.

[1] – 0 не является ни положительным, ни отрицательным.

Обычно с 32-битными целыми значениями разница между подписанным и unsigned – это то, как вы интерпретируете значение. Например, (-1) +1 будет равным 1 для подписанных и неподписанных, для подписанных это очевидно, и для unsigned это, конечно, только true, если вы просто перебиваете переполнение. Таким образом, у вас есть 32 бита для хранения значений, это просто так, что есть 1 бит, который интерпретируется иначе, чем остальные.

Два дополнения чаще всего используются для хранения чисел, а это означает, что 1 бит не будет потрачен впустую только для знака.

В PHP, если число переполняет INT_MAX для платформы, оно преобразует его в значение с плавающей запятой.

2147483647 – обычное значение 2 ^ 31-1. 1 бит для знака и -1, потому что мы также представляем 0.

из руководства: «Размер целого зависит от платформы, хотя максимальное значение около двух миллиардов – это обычное значение (это 32 бита). 64-разрядные платформы обычно имеют максимальное значение около 9E18. поддержка целых чисел без знака. Целочисленный размер может быть определен с использованием константы PHP_INT_SIZE и максимального значения с использованием константы PHP_INT_MAX с PHP 4.4.0 и PHP 5.0.5. "

Да, если бы он использовал целое число без знака, он будет использовать 32-битное, чтобы сохранить его, поскольку в этом случае вам не нужен знак, но поскольку он поддерживает только целые числа со знаком, 32-битные системы будут иметь 31 бит для значения и 1 бит для знака s0 максимум значный целочисленный диапазон от -2147483648 до 2147483647.

Побитовые (поразрядные) операторы & , | , ^ и

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

Формат 32-битного целого числа со знаком

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

Вот так, например, вы­глядият числа, записанные в формате 32-разрядного целого двоичного числа:

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

Чтобы не путать, в какой системе счисления записано число, обычно в индексе пишут основание системы счисления, в которой оно записао. Например, число 5 в десятичной системе – 510,а в двоичной – 1012.

Чтобы перевести число в двоичную систему счисления необходимо делить его нацело на 2 пока не получим , затем необходимо записать все остатки от деления в обратном порядке.

Например, число 18, записываемое в двоичной системе счисления, имеет значение:

Теперь записываем полученные остатки от деления в обратном порядке. Получаем, что число 18 в двоичном представлении будет выглядеть как 00000000000000000000000000010010 (обратите внимание, число состоит ровно из 32-битов), или, сокращенно, как 10010. Эти пять значимых битов и определяют фактическое значение числа 18.

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

Читайте также:  Стандартное ограничение фоновых процессов в андроид

где а – число в десятичной системе счисления; a, a1, … an – цифры данного числа в двоичном представлении. Причём a — это последняя или правая цифра, а an – первая.

Например, возьмём двоичное число 1010012. Для перевода в десятичное запишем его как сумму по разрядам следующим образом:

Перепишем тоже самое, возведя в степени все основания 2:

Можно записать это в виде таблицы следующим образом:

512
(2 10 )
256
(2 9 )
128
(2 8 )
64
(2 6 )
32
(2 5 )
16
(2 4 )
8
(2 3 )
4
(2 2 )
2
(2 1 )
1
(2 0 )
1 1 1
+32 +0 +8 +0 +0 +1

Положительные числа хранятся в настоящем двоичном формате, в котором все биты, кроме знакового (крайний левый), представляют степени двойки: первый бит (справа) соответствует 2 0 , второй – 2 1 , третий – 2 2 и т. д. Если какие-либо биты не используются, они считаются равными нулю.

Теперь под каждой двоичной единицей напишите её эквивалент в нижней строчке таблицы и сложите получившиеся десятичные числа. Таким образом, двоичное число 1010012 равнозначно десятичному 4110.

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

Отрицательные числа также хранятся в двоичном коде, но в формате, который на­зывается «дополнителъным кодом» (англ. two’s complement, иногда twos-complement).

Представление в «дополнительном коде» означает, что отрицательное значение числа (например 5 и -5) получается путем инвертирования числа (операция «побитовое НЕ», также известное как «обратный код» или «первое дополнение») и прибавлением к инверсии единицы («второе дополнение»).

К примеру, определим двоичное представление числа -5. Начнём с двоичного представления его абсолютного значения (5):

Инвертируем все разряды числа (заменим на 1, а 1 на ), получая таким образом обратный код (первое дополнение) числа 5:

Дополнительный код (второе дополнение) двоичного числа получается добавлением 1 (обычным двоичным сложением) к младшему значащему разряду его первого дополнения:

Итак, мы получили:

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

Однако в JavaScript такое двоичное представление чисел скрыто. Например, при выводе отрицательного числа в виде двоичной строки вы получите сокращенный двоичный код абсолютного значения этого числа со знаком «минус»:

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

Список побитовых операторов

В следующей таблице перечислены все побитовые (поразрядные) операторы JavaScript:

Поразрядные операторы
Оператор Использование Описание
Побитовое И (AND) a & b Возвращает 1 в тех позициях результата, в кото­рых биты каждого из операндов равны 1.
Побитовое ИЛИ (OR) a | b Возвращает 1 в тех позициях результата, в кото­рых бит хотя бы одного из операндов равен 1.
Побитовое исключающее ИЛИ (XOR) a ^ b Возвращает 1 в тех позициях результата, в кото­рых бит только одного из операндов равен 1.
Побитовое НЕ (NOT)

a

Заменяет каждый бит операнда на противопо­ложный. Сдвиг влево a Сдвигает двоичное представление числа a на b разрядов влево заполняя освободившиеся справа разряды нулями. Правый сдвиг, переносящий знак a >> b Сдвигает двоичное представление а на b разрядов вправо, отбрасывая уходящие биты. Правый сдвиг с заполнением нулями a >>> b Сдвигает двоичное представление числа a на b разрядов вправо. Освобождающиеся разряды заполняются нулями.

Побитовые операторы, подобно логическим операторам, выполняют логические операции И, ИЛИ, НЕ, XOR , но с каждым отдельным битом целого числа. Cреди побитовых операторов есть также операторы сдвига >, >>> позволяющие переместить все биты числа влево или вправо на нужно количество разрядов. Побитовые операторы преобразуют свои операнды в 32-битные целые числа, представленные последовательностью битов. Дробная часть, если она есть, отбрасывается. Получившаяся в результате выполнения последовательность бит интерпретируется как обычное число.

Побитовое И (&)

Таблица истинности для этой операции выглядит так:

a b a & b
1
1
1 1 1

В следующем примере поразрядное И выполняется для чисел 38 и 3:

Как видите, только в одной позиции биты обоих операндов равны 1. Из-за этого все остальные биты результата обнуляются, что в итоге дает 000010. Как результат, получаем 0000102, или 210.

Побитовое ИЛИ (|)

Побитовое ИЛИ ( | ) выполняет булеву операцию дизъюнкции над каждой парой битов, которые стоят на одинаковых позициях в двоичных представлениях операндов. Другими словами, результат a | b равен , если оба соответствующих бита операндов равны ; если же хотя бы один бит из пары равен 1, результирующий двоичный разряд равен 1.

Таблица истинности для этой операции выглядит так:

a b a | b
1 1
1 1
1 1 1

В следующем примере поразрядное ИЛИ выполняется для чисел 38 и 3:

Каждый единичный бит любого из операндов переходит в результат. В итоге, получаем 1001112, или 3910.

Побитовое исключающее ИЛИ (^)

Побитовое исключающее ИЛИ ( ^ ) выполняет исключающую дизъюнкцию над каждой парой битов, которые стоят на одинаковых позициях в двоичных представлениях операндов. Другими словами, результат a ^ b равен , если оба соответствующих бита операндов равны между собой; в противном случае, двоичный разряд результата равен 1.

Таблица истинности для этой операции выглядит так:

a b a ^ b
1 1
1 1
1 1

В следующем примере поразрядное исключающее ИЛИ выполняется для чисел 38 и 3:

Этот пример отличается от предыдущего только тем, что второй бит результата обнуляется, поскольку в обоих операндах он равен 1. Все остальные единичные биты переходят в результат, потому что у них нет пары. В итоге, получаем 1001012, или 3710.

Исключающее ИЛИ ( ^ ) с нулём в качестве одного из операндов можно использовать для округления математических выражений:

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

Побитовое НЕ (

Побитовое отрицание НЕ (

) – это унарный оператор, который возвращает обратный код числа. Другими словами, на той позиции, где в двоичном представлении операнда был , в результате будет 1, и, наоборот, где была 1, там будет .

Таблица истинности для этой операции выглядит так:

a

1 1

В следующем примере операция НЕ выполняется для числа 52:

Оцените статью
Добавить комментарий

Adblock detector