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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
grenuj
6 / 6 / 0
Регистрация: 30.11.2013
Сообщений: 25
02.12.2013, 20:57     Как положительной переменной присвоить отрицательное значение? #1
Надо изменить знак числа на противоположный.
Условие: нельзя использовать клавишу "-"
Как это можно сделать?

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]?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 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
881 / 616 / 81
Регистрация: 12.04.2010
Сообщений: 1,546
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;
}
Байт
 Аватар для Байт
13941 / 8772 / 1220
Регистрация: 24.12.2010
Сообщений: 15,879
02.12.2013, 21:10     Как положительной переменной присвоить отрицательное значение? #6
Видимо, что-то связанное с битовыми операциями. Типа a = !a + 1
Точно не знаю, с битовыми операциями и представлением отрицательных чисел знакомился давно и все забыл.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11801 / 6780 / 765
Регистрация: 27.09.2012
Сообщений: 16,833
Записей в блоге: 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     Как положительной переменной присвоить отрицательное значение?
Еще ссылки по теме:

Присвоить переменной значение по условию C++
Как присвоить возвращаемое значение функции переменной? C++
Как присвоить переменной Double значение NaN? C++

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

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

Не по теме:

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

Не по теме:


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

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

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

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