Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
59 / 5 / 0
Регистрация: 03.11.2015
Сообщений: 104
1

Представление типа как signed/unsigned

26.03.2016, 09:30. Показов 1535. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите, пожалуйста, если для представления типа данных как signed отвечает старший разряд, то как происходит разделение типа данных на signed/unsigned. Например, для представления наименьшего знакового значения типа char используют старший разряд 1000 0000, но как, в каком месте определяется сам тип signed/unsigned?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.03.2016, 09:30
Ответы с готовыми решениями:

Определение диапазонов переменных типов char, short, int и long (как signed, так и unsigned)
Вроде до этого все читал внимательно, задание понимаю, как реализовать - не знаю. С только начал...

Разобрать код с signed unsigned
Прошу помочь разобраться signed char sc; signed short int ssi; signed int si; signed long sl;...

Результат сравнения signed и unsigned
Добрый день! Помогите, пожалуйста, разобраться. Почему при сравнении этих переменных выдает ложь:...

Вывод на экран значений signed от unsigned
Здравствуйте! Помогите разобраться с выводом значений signed и unsigned. Я знаю что это знаковые и...

4
Вездепух
Эксперт CЭксперт С++
12807 / 6680 / 1799
Регистрация: 18.10.2014
Сообщений: 16,915
26.03.2016, 10:22 2
Никак и ни в каком.

Данные в памяти традиционной современной массовой платформы хранятся в виде последовательностей безличных нулей и единиц, не обладающих никаким дополнительными свойствами. Как роман "Война и мир" в памяти принципиально ничем не отличается от картины "Девочка с персиками", так и беззнаковый char в памяти ничем не отличается от знакового char или от массива double. Все это - лишь нули и единицы в памяти.

Различия будут возникать только на уровне интерпретации этих безличных нулей и единиц обрабатывающим их кодом. Обрабатывающий код должен знать, где в памяти лежит "Война и мир", где - "Девочка с персиками", где - беззнаковый char, где знаковый char, а где - массив double. И, соответственно, обрабатывающий код должен применять правильные операции, заточенные под правильные типы данных при работе с каждым участком памяти.

Причем правильность в данном случае - понятие относительное. Эту правильность никто не контролирует. Никто вам не запрещает, при необходимости, интерпретировать значение типа signed char в памяти как значение типа unsigned char. Или массив double как массив unsigned char.

Справедливости ради надо заметить, что существуют экзотические (и не очень) архитектуры и платформы, в которых в памяти хранятся не только данные, но еще и специальные тэги, описывающие тип хранимых данных и то, что с ними можно/нельзя делать. Но такие архитектуры и платформы массового распространения не получили. Советский "Эльбрус" как раз является примером тэговой архитектуры.
4
59 / 5 / 0
Регистрация: 03.11.2015
Сообщений: 104
26.03.2016, 10:47  [ТС] 3
TheCalligrapher, значит, чтобы ответить на свой вопрос нужно знать устройство компилятора?
0
Вездепух
Эксперт CЭксперт С++
12807 / 6680 / 1799
Регистрация: 18.10.2014
Сообщений: 16,915
26.03.2016, 10:53 4
Знать для чего именно?

Когда речь идет о более-менее строго типизированных языках программирования, то заботу об правильной интерпретации каждой области памяти (т.е. о контроле соответствия типов) берет на себя компилятор. Вы объявили переменную типа double - компилятор для работы с соответствующим кусочком памяти генерирует машинные инструкции, соответствующие типу double. Вы объявили переменную типа signed char - компилятор работает с соответствующим кусочком памяти через инструкции, соответствующие signed char. И т.д.

Вот, собственно, и все. А уж что еще вам надо знать - зависит.
4
20 / 10 / 2
Регистрация: 07.03.2016
Сообщений: 211
29.03.2016, 06:13 5
TheCalligrapher, осмелюсь сообщить, что это ваше "Советский "Эльбрус", -
-это примерно то же, как если бы напечатать "Капиталистический Гринвичский Меридиан").
----
вы завидуете, что система Эльбрус умеет аппаратно разбирать стек?)
*просто интересна причина акцентуации на "Советский"
0
29.03.2016, 06:13
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.03.2016, 06:13
Помогаю со студенческими работами здесь

Каким бы стоило сделать тип char по умолчанию — signed или unsigned?
Появился такой вопрос: каким бы стоило сделать тип char по умолчанию - signed или unsigned?

Ошибка W8012: "Comparing signed and unsigned values"
void init() { int j; gotoxy(x,menuitem+9); MODE_8; cprintf("%s",menu_names); ...

Тип signed char и unsigned char
Есть путаница в типах данных в Си signed char и unsigned char. Если объявить переменную следующим...

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

Ошибка при вводе переменной типа unsigned short
void main() { setlocale(LC_CTYPE, "rus"); unsigned short u; printf_s("Введите целое...

Перевод массива unsigned char в число типа int
Добрый день всем! Есть массив, который заполняется трехзначным числом, введенным с клавиатуры...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетных компьютеров началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
Как без исключения проверить существование файла в Python
InfoMaster 19.01.2025
При разработке программного обеспечения на Python часто возникает необходимость проверить существование файла перед выполнением операций с ним. Это критически важная задача, которая помогает избежать. . .
Как определить, содержит ли строка подстроку в JavaScript
InfoMaster 19.01.2025
При разработке веб-приложений часто возникает необходимость выполнять различные операции со строками, среди которых особое место занимает поиск подстрок. JavaScript предоставляет несколько встроенных. . .
Что такое метаклассы в Python
InfoMaster 19.01.2025
Метаклассы в Python представляют собой один из самых мощных и одновременно сложных механизмов языка, позволяющий программистам контролировать процесс создания классов. По своей сути, метакласс. . .
Как удалить свойство из объекта JavaScript
InfoMaster 19.01.2025
В современной веб-разработке объекты JavaScript играют фундаментальную роль в организации и структурировании данных. Они представляют собой контейнеры, которые хранят связанные данные и. . .
Какая разница между String и string в C#
InfoMaster 19.01.2025
В языке программирования C# существует интересная особенность: для работы со строками можно использовать как String, так и string. Эта двойственность часто вызывает вопросы у разработчиков, особенно. . .
Как в Git откатить репозиторий к предыдущему коммиту
InfoMaster 19.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса, предоставляя разработчикам мощные инструменты для управления изменениями в. . .
Как работают замыкания (closure) в JavaScript
InfoMaster 19.01.2025
В мире современной веб-разработки замыкания (closures) представляют собой один из фундаментальных концептов языка JavaScript, который часто вызывает затруднения у начинающих разработчиков, но при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru