|
касаткО
51 / 51 / 4
Регистрация: 01.10.2011
Сообщений: 227
|
|
Signed/Unsigned21.03.2012, 19:40. Показов 25430. Ответов 64
Метки нет (Все метки)
Здравствуйте! Стал изучать ЯП C. Не совсем могу понять, что означает Signed и Unsigned (как я понял означает наличие знака(+ либо -) или его отсутствие). Не мог ли бы доходчиво объяснить, что это означает и в какой ситуации используется.
0
|
|
| 21.03.2012, 19:40 | |
|
Ответы с готовыми решениями:
64
Сложение signed и unsigned
Сравнение чисел unsigned и signed |
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 21.03.2012, 20:03 | |
|
Отличие в том, что один тип имеет знак ( -\+ ) а другой ( unsigned ) не имеет знака. Беззнаковые обычно используются для индексации или для определения размерности массивов, так же часто для счетчиков в циклах.
1
|
|
|
касаткО
51 / 51 / 4
Регистрация: 01.10.2011
Сообщений: 227
|
|
| 21.03.2012, 20:04 [ТС] | |
|
0
|
|
|
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
|
|
| 21.03.2012, 20:09 | |
|
если у вас с элементарной математикой не безнадёжно, то думаю не надо объяснять разницу между целыми и целыми неотрицательными
1
|
|
|
касаткО
51 / 51 / 4
Регистрация: 01.10.2011
Сообщений: 227
|
|||||||
| 21.03.2012, 20:11 [ТС] | |||||||
|
я правильно думаю ?
0
|
|||||||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 21.03.2012, 20:17 | |
|
Да, все верно.
1
|
|
|
касаткО
51 / 51 / 4
Регистрация: 01.10.2011
Сообщений: 227
|
|
| 21.03.2012, 20:18 [ТС] | |
|
Спасибо вам большое
0
|
|
|
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
|
|||||||
| 21.03.2012, 20:19 | |||||||
1
|
|||||||
|
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
|
| 21.03.2012, 20:22 | |
|
retmas, не все сразу.
Jetu, дело в том, что старший бит интерпретируется как знак, в знаковом числе (0 - положительное, 1 - отрицательное). Помня, что отрицательные числа хранятся в доп. коде, я думаю все станет понятно.
2
|
|
|
касаткО
51 / 51 / 4
Регистрация: 01.10.2011
Сообщений: 227
|
||
| 21.03.2012, 20:27 [ТС] | ||
|
спасибо что помогли
0
|
||
|
|
||||||||||||
| 21.03.2012, 20:32 | ||||||||||||
|
Знаковость и беззнаковость означает примерно следующее. Целочисленная переменная занимает в памяти столько-то бит. И эти биты можно трактовать двояко. Либо это беззнаковая величина, и тогда она будет лежать в диапазоне от нуля до +дофига, либо это знаковая величина, и тогда она будет лежать в диапазоне от -дофига/2 до +дофига/2. Например. Возьмём 32 бита и заполним их единичками. Если данную переменную мы будем трактовать как знаковую, то значение переменной будет равно -1. Но если этот же самый набор битов мы будем трактовать как беззнаковую переменную, то её значение будет равно 4.294.967.295 При компиляции следующих двух строк получится абсолютно одинаковый машинный код:
2
|
||||||||||||
|
касаткО
51 / 51 / 4
Регистрация: 01.10.2011
Сообщений: 227
|
|
| 21.03.2012, 20:36 [ТС] | |
|
0
|
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 21.03.2012, 21:00 | |
|
Evg, а как они различаются на знаковые и беззнаковые в уже скомпилированной программе?
0
|
|
|
|
||
| 21.03.2012, 21:12 | ||
|
Но при сложении, знаковые и беззнаковые типы вообще никак не отличаются. Это является свойством хранения чисел в двоичном виде в дополнительном коде. Другими словами, если сложить -1 + 1 и если сложить 4294967295 + 1, то получится одно и то же значение (ноль). Таким образом, целочисленные операции условно можно разбить на две группы: 1. Те, при исполнении которых знаковость не играет никакой роли: сложение, вычитание, умножение, and, or, not, xor, сдвиг влево, сравнения равно или не равно. Аппаратно как правило есть только одна операция (в том смысле, что не зависящая от знаковости). 2. Те, при исполнении которых знаковость имеет значение: деление, остаток от деления, сдвиг вправо, сравнения меньше, больше, меньше или равно, больше или равно. Аппаратно как правило есть только две операции (знаковая и беззнаковая). Здесь надо оговориться, что это разделение сделано при условии, что аргументы операции имеют тот же размер, что и результат. На sparc'е, например, есть операция умножения двух 32-битных аргументов, которая формирует 64-битный результат. Операции такого типа уже зависят от знаковости (т.е. есть отдельная операция для знакового умножения и отдельная для беззнакового). Но при использовании любой из операций младшие 32 бита результат будут одинаковыми
3
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|||
| 21.03.2012, 21:27 | |||
|
И как процессор выбирает знаковую или беззнаковую операцию? Или это определяется при компилировании и просто программой вызывается нужна операция?
0
|
|||
|
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
||
| 21.03.2012, 21:48 | ||
|
Об этом знает процессор.
0
|
||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 21.03.2012, 21:54 | |
|
go, если честно, вообще ничего не понял из Вашего сообщения. Выше и ниже чего? И откуда и что знает процессор?
0
|
|
|
|
||||
| 21.03.2012, 22:01 | ||||
|
1
|
||||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 21.03.2012, 22:03 | |
|
Все понятно, спасибо.
0
|
|
| 21.01.2021, 00:50 | ||
charможет занимать 0-255, если применить приставку signed тоchar будет хранить от -128 до 127 или я не прав? Информацию о типах брал здесь https://metanit.com/cpp/tutorial/2.3.php у меня стандартные типы и char хранит от -128-127.
0
|
||
| 21.01.2021, 00:50 | |
|
Помогаю со студенческими работами здесь
20
Comparison between signed and unsigned integer expressions Значения типов данных (signed, unsigned, char)
[C++ Warning] Unit1.cpp(24): W8012 Comparing signed and unsigned values Надо перевести переменную типа unsigned char* в signed int и обратно Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|