С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
h3mbr0
248 / 91 / 21
Регистрация: 12.03.2012
Сообщений: 362
#1

Как в signed char помещается диапазон -128,127 ведь если 127 это 01111111, то -127 должно быть 11111111 - C++

29.08.2012, 22:41. Просмотров 1988. Ответов 23
Метки нет (Все метки)

Добрый вечер! ломаю голову над тем, как в signed char помещается диапазон -128,127 ведь если 127 это 01111111, то -127 должно быть 11111111, а чему же тогда равно -128 в binary?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2012, 22:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как в signed char помещается диапазон -128,127 ведь если 127 это 01111111, то -127 должно быть 11111111 (C++):

8-битовый тип signed char может представлять значения от -128 до 127 - C++
8-битовый тип signed char может представлять значения от -128 до 127 Кто может растолковать как это понимать, от 128 до 127 -...

Вывод символов выше 127 (математические, немецкие и т.п) - C++
Вообщем такая вот трабла. Надо выводить символы выше 127 (математические, немецкие и т.п) Как, как это делается в VC++... Плиз кто...

Что означает сообщение компилятора code block Process terminated with status 127 - C++
О чем говорит данная надпись? "code block Process terminated with status 127"

Определить число полученное выписыванием в обратном порядке цифр заданного треьохзначного числа(721-127) - C++
Помогите пожалуста )Буду очень благодарен)

Диапазон чисел - вывести по порядку, указывая сколько строк должно быть - C++
Здравствуйте! Я новичек, и пробую сам изучать С++ решая задачки. Вот собственно застрял на одном вопросе. Знаю что решение довольно...

Как 127.0.0.1/index.phtml сделать 127.0.0.1 ? - Apache, htaccess
Здравствуйте, установила апач и пхп на линукс все работает, но что-то не настроено, объясните пожалуйста как сделать чтобы при наборе...

23
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
29.08.2012, 22:43 #2
-128 и не входит
диапозон -127,0,+127
Bash
1
2
3
4
5
- 127  - 11111111
- 1    - 10000001
  0    - 00000000
  1    - 00000001
  127  - 01111111
1
h3mbr0
248 / 91 / 21
Регистрация: 12.03.2012
Сообщений: 362
29.08.2012, 22:46  [ТС] #3
Спасибо. Знакомый недавно упорно доказывал что во все signed входит отрицательное число равное числу старшего бита
0
Veyron
106 / 106 / 4
Регистрация: 02.06.2009
Сообщений: 578
29.08.2012, 22:48 #4
alex_x_x, да ты что? Загляни сюда тогда.
1
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
29.08.2012, 22:51 #5
Цитата Сообщение от Veyron Посмотреть сообщение
alex_x_x, да ты что? Загляни сюда тогда.
ну да, иначе был бы +0 и -0
0
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
29.08.2012, 22:52 #6
Мало того, что 1111 1111 это не -127, а -1, -128 входит в этот диапазон и представляется значением 1000 0000.
Чтобы получить преобразовать дополнительный код в прямой, нужно проинвертировать все биты в абсолютном значении числа и прибавить единицу
0
Veyron
106 / 106 / 4
Регистрация: 02.06.2009
Сообщений: 578
29.08.2012, 22:53 #7
h3mbr0, пример в Вашем первом посте демонстрирует другой формат представления данных (прямой код со знаковым битом). На практике используют дополнительный код, так как удобно складывать отрицательные и положительные числа в этом случае.
1
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
29.08.2012, 22:57 #8
ломаю голову над тем, как в signed char помещается диапазон -128,127
А в чем проблема? char представляет 256 различных значений, диапазон -128;127 содержит ровно 256 различных значений. А -127;127 только 255.
1
h3mbr0
248 / 91 / 21
Регистрация: 12.03.2012
Сообщений: 362
29.08.2012, 23:00  [ТС] #9
Цитата Сообщение от Veyron Посмотреть сообщение
h3mbr0, пример в Вашем первом посте демонстрирует другой формат представления данных (прямой код со знаковым битом). На практике используют дополнительный код, так как удобно складывать отрицательные и положительные числа в этом случае.
Можно поподробнее? никогда с битами не встречался, но ведь программист не умеющий работать с битами не программист, вот я и решил за них взяться, из того что вычитал - знаю только о таком представлении

Добавлено через 2 минуты
Использую такой код для вычисления двоичного числа:
C++
1
2
3
4
5
6
7
8
9
template<typename T>
void dec2bin(const T &d)
{
    d<0 && exit(1);
    cout << "\ndec - " << short(d) << "\nbin - ";
    for (int i=sizeof(T)*8-1; i>=0; i--)
        cout << (d>>i)%2;
    cout << endl;
}
правда работает он только с unsigned. А как представить то же число в дополнительном коде?
0
Veyron
106 / 106 / 4
Регистрация: 02.06.2009
Сообщений: 578
29.08.2012, 23:12 #10
h3mbr0, все положительные числа и ноль в любом коде выглядят одинаково.
В прямом коде отрицательное число - положительное число со знаковым битом.
В обратном коде отрицательное число - дополнение до положительного (обращаем все биты).
В дополнительном коде отрицательное число - дополнение до положительного плюс единица.

Подробнее можно почитать в интернете, конкретно в википедии статьи о прямом, обратном и дополнительном коде.
1
h3mbr0
248 / 91 / 21
Регистрация: 12.03.2012
Сообщений: 362
29.08.2012, 23:25  [ТС] #11
Цитата Сообщение от Veyron Посмотреть сообщение
h3mbr0, все положительные числа и ноль в любом коде выглядят одинаково.
В прямом коде отрицательное число - положительное число со знаковым битом.
В обратном коде отрицательное число - дополнение до положительного (обращаем все биты).
В дополнительном коде отрицательное число - дополнение до положительного плюс единица.

Подробнее можно почитать в интернете, конкретно в википедии статьи о прямом, обратном и дополнительном коде.
Спасибо за пояснение. А есть способ распечатать число в этом самом дополнительном коде?
0
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
29.08.2012, 23:33 #12
все signed типы хранятся в дополнительном коде, нужно лишь вывести их побитно.
1
h3mbr0
248 / 91 / 21
Регистрация: 12.03.2012
Сообщений: 362
29.08.2012, 23:38  [ТС] #13
Цитата Сообщение от Герц Посмотреть сообщение
все signed типы хранятся в дополнительном коде, нужно лишь вывести их побитно.
Меня и интересует как вывести их побитно)
0
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
29.08.2012, 23:50 #14
C++
1
2
3
4
5
    int a = -2;
    for ( int i = 8 * sizeof( a ) - 1; i >= 0; --i ) {
        std::cout << ( ( a >> i ) & 1 );
    }
    return 0;
2
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
30.08.2012, 00:59 #15
C++
1
2
3
4
5
6
7
8
9
10
#include <bitset>
#include <iostream>
 
template <typename T> void print (const T& value) {
  std::cout << std::bitset<sizeof(T) * 8> (value) << std::endl;
}
 
int main () {
  print ((signed char)-127);
}
правда я не уверен насчет стандартности

Добавлено через 1 минуту
не, таки есть
template <class charT, class traits, size_t N>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const bitset<N>& x);
1
30.08.2012, 00:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2012, 00:59
Привет! Вот еще темы с ответами:

На промежутке от -128 до 127 подсчитать пар чисел, удовлетворяющих условию - Assembler
Здравствуйте. Я плохо дружу с ассемблером. Код на задачу нашел здесь на форуме, но не совсем смог разобраться и понять закоммментирую где...

Char с кодом > 127 в Interbase и JBuilder - Java БД
У меня такая задача надо записать массив байтов в табличку. при этом содержимое массив - набор битов (типа шкалы) Соотв диапазон от 0..255 ...

Как в регистрах работать со значениями >127 - Assembler
Здравствуйте! Решал задачу &quot;Если в однобайтовом целом числе есть непарное кол-во нулевых разрядов вывести &quot;Y&quot;, иначе &quot;N&quot;&quot; У меня все...

Как же передать на сервер байт со значеием > 127? - Java Сети
Такая вот проблема: Клиент - апплет, сервер - приложение на VC++. Сокетное соединение. Апплетом пишу в сокет данные пользуясь...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.