Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
grenuj
6 / 6 / 0
Регистрация: 30.11.2013
Сообщений: 25
#1

Как положительной переменной присвоить отрицательное значение? - C++

02.12.2013, 20:57. Просмотров 2137. Ответов 14
Метки нет (Все метки)

Надо изменить знак числа на противоположный.
Условие: нельзя использовать клавишу "-"
Как это можно сделать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
int main()
{
    int a;
    
    cout << "Введите положительное число: ";
    cin >> a;
    
    ... Тут надо изменить знак числа на противоположный ...
    cout << "Отрицательное число равно " << a << endl;
    
    return 0;
}
Добавлено через 26 минут
Подскажите что-нибудь
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2013, 20:57     Как положительной переменной присвоить отрицательное значение?
Посмотрите здесь:

Как присвоить такое значение переменной int C++
как присвоить переменной char значение слова ? C++
присвоить переменной значение C++
C++ Присвоить значение наименьшего элемента массива переменной М1, номер строки, где находится этот элемент, - переменной Т, номер столбца - переменной С
C++ Как присвоить переменной типа String значение argv[0]?
Присвоить переменной значение по условию C++
Как присвоить возвращаемое значение функции переменной? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3030 / 2351 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
02.12.2013, 21:00     Как положительной переменной присвоить отрицательное значение? #2
Цитата Сообщение от grenuj Посмотреть сообщение
... Тут надо изменить знак числа на противоположный ...
C++
1
a *= -1;
Добавлено через 55 секунд
Либо
C++
1
a = -a;
newbie666
Заблокирован
02.12.2013, 21:03     Как положительной переменной присвоить отрицательное значение? #3
Цитата Сообщение от kazak Посмотреть сообщение
1
a = -a;
он говорил, не нажимая на клавишу минуса на клавиатуре
Alex5
998 / 661 / 92
Регистрация: 12.04.2010
Сообщений: 1,681
02.12.2013, 21:09     Как положительной переменной присвоить отрицательное значение? #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Для int a; -a эквивалентно ~a + 1
Пример.
C++
1
2
3
4
    int a, b, c;
    a = 1;
    b = ~a;  // 0xfffffffe это ещё не то, что надо 
    c = ~a + 1; // 0xffffffff , то есть -1
newbie666
Заблокирован
02.12.2013, 21:10     Как положительной переменной присвоить отрицательное значение? #5
Цитата Сообщение от grenuj Посмотреть сообщение
Условие: нельзя использовать клавишу "-"
чудное задние, ну если не используя клавиши минус на клавиатуре, тогда так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main()
{
    int a;
    
    cout << "Введите положительное число: ";
    cin >> a;
    
    a *= 0xffffffff;
 
    cout << "Отрицательное число равно " << a << endl;
    
    return 0;
}
Байт
Эксперт C
 Аватар для Байт
15047 / 9449 / 1383
Регистрация: 24.12.2010
Сообщений: 17,487
02.12.2013, 21:10     Как положительной переменной присвоить отрицательное значение? #6
Видимо, что-то связанное с битовыми операциями. Типа a = !a + 1
Точно не знаю, с битовыми операциями и представлением отрицательных чисел знакомился давно и все забыл.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12513 / 7075 / 794
Регистрация: 27.09.2012
Сообщений: 17,470
Записей в блоге: 2
Завершенные тесты: 1
02.12.2013, 21:11     Как положительной переменной присвоить отрицательное значение? #7
Цитата Сообщение от Байт Посмотреть сообщение
a = !a + 1
для побитового НЕ "~" вместо "!"
grenuj
6 / 6 / 0
Регистрация: 30.11.2013
Сообщений: 25
02.12.2013, 22:02  [ТС]     Как положительной переменной присвоить отрицательное значение? #8
Цитата Сообщение от Alex5 Посмотреть сообщение
C++
1
2
3
4
int a, b, c;
   a = 1;
   b = ~a; *// 0xfffffffe это ещё не то, что надо 
   c = ~a + 1; // 0xffffffff , то есть -1
Цитата Сообщение от newbie666 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
int main()
{
    int a;
    cout << "Введите положительное число: ";
    cin >> a;
    a *= 0xffffffff;
    cout << "Отрицательное число равно " << a << endl;
    return 0;
}
Спасибо! С битовыми операциями более менее понятно. А вот при умножении числа на 0xffffffff еще не разобрался.
Это надо наверно сначала в столбик перемножить и посмотреть что получится. Почему получается именно отрицательное число при умножении
Но оба эти варианта правильно работают
newbie666
Заблокирован
02.12.2013, 22:18     Как положительной переменной присвоить отрицательное значение? #9
Цитата Сообщение от grenuj Посмотреть сообщение
Почему получается именно отрицательное число при умножении
Но оба эти варианта правильно работают
весь фокус в том, что 0xffffffff - это минус один в шестнадцатиричной системе исчисления в 32-х битной ОС То есть 0xffffffff = -1 , я как бы умножаю на минус один, не используя минуса, как ты и просил
Можешь в калькуляторе виндуса зайти в режим "программист" и в режиме dec набрать -1, далее нажать на кнопку hex и увидишь, что это за число
grenuj
6 / 6 / 0
Регистрация: 30.11.2013
Сообщений: 25
02.12.2013, 22:33  [ТС]     Как положительной переменной присвоить отрицательное значение? #10
Цитата Сообщение от newbie666 Посмотреть сообщение
весь фокус в том, что 0xffffffff - это минус один в шестнадцатиричной системе исчисления
ну и ну. Оказалось все так просто, что даже и слов нет.
Тут единственное это то, что нужно знать эту систему счисления и преобразования.
newbie666
Заблокирован
02.12.2013, 22:53     Как положительной переменной присвоить отрицательное значение? #11
Цитата Сообщение от grenuj Посмотреть сообщение
Тут единственное это то, что нужно знать эту систему счисления и преобразования
даже и это не обязательно, если есть под рукой калькулятор windows
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
02.12.2013, 23:12     Как положительной переменной присвоить отрицательное значение? #12
C++
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    cout << cos(M_PI) << endl;              // -1
    cout << log10(0.1) << endl;             // -1
    cout << tan(M_PI*135.0/180.0) << endl;  // -1
    cout << copysign(1, 1<<31) << endl;     // -1
    cout << (1<<31)/(1<<30)/2 << endl;      // -1
}
Croessmah
03.12.2013, 11:23
  #13

Не по теме:

Цитата Сообщение от newbie666 Посмотреть сообщение
если есть под рукой калькулятор windows
а у меня и windows'а нет

newbie666
03.12.2013, 11:26
  #14

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
а у меня и windows'а нет
а в пингвинах что калькулятор как на старом мобильном телефоне ?

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2013, 11:31     Как положительной переменной присвоить отрицательное значение?
Еще ссылки по теме:

Как присвоить переменной Double значение NaN? C++
C++ Как присвоить переменной значение pow?
Как присвоить переменной типа string значение из файла C++
Как переменной Char присвоить значение целого текста? C++
C++ Как переменной Char присвоить значение целого текста полученого из файла?

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

Или воспользуйтесь поиском по форуму:
programina
03.12.2013, 11:31     Как положительной переменной присвоить отрицательное значение?
  #15

Не по теме:

Цитата Сообщение от newbie666 Посмотреть сообщение

Не по теме:


а в пингвинах что калькулятор как на старом мобильном телефоне ?

Расскажите это красноглазикам. Windows vs Linux (0Ch)

Yandex
Объявления
03.12.2013, 11:31     Как положительной переменной присвоить отрицательное значение?
Ответ Создать тему
Опции темы

Текущее время: 20:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru