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

Обьясните понятие как работает Операция языка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Почему в switch нельзя определять переменные? http://www.cyberforum.ru/cpp-beginners/thread926520.html
int main() { setlocale(LC_ALL, "Russian"); int n; std::cout << "Введите число: "; std::cin >> n; switch (n)
C++ Проясните освобождение памяти Допустим есть такой код: typedef struct COORDINATE { QVector<int> x; QVector<int> y; QVector<int> z; } Coordinate; public: void SaveCoord(); http://www.cyberforum.ru/cpp-beginners/thread926507.html
Упрощение логического выражения C++
Всем привет. Сейчас решаю задачу про шахматного коня по книжке Дейтелов. Там предлагается высчитать доступность каждой клетки и двигать коня туда, где доступность наименьшая. Чтобы ее рассчитать,...
C++ Тип string и subscript out of range
Доброго времени дня. Такая проблема. Обращаюсь к отдельному элементу массива: #include <iostream> #include <string> #include <conio.h> using namespace std;
C++ Если кого не затруднит, посмотрите где у меня ошибка http://www.cyberforum.ru/cpp-beginners/thread926474.html
Вот задание: Даны две последовательности a1, a2, …an и b1, b2, …bm. (n>m). В каждой из них члены различны. Верно, ли что все члены второй последовательности входят в первую последовательность? У...
C++ char[] #include <iostream> using namespace std; #define N 4 #define S 2 int main() { int rate; int s=0; подробнее

Показать сообщение отдельно
ValeryS
Модератор
6634 / 5041 / 466
Регистрация: 14.02.2011
Сообщений: 16,851
21.07.2013, 20:03
Цитата Сообщение от Retyrn0 Посмотреть сообщение
А при вычитании unsigned чисел, вычитаемое нуждается же в преобразовании вроде?
нет
у ассемблера (сиречь машинного кода ) есть команда для сложения ADD и вычитания SUB
Хотя в самом процессоре может и преобразуется,зависит от инженеров как они реализовали SUB
да и процессор не знает такого знаковый беззнаковый, он знает просто числа
рассмотрим пример
безнаковое сложение
255(FF) +1 (1)=1 00 т.е получился 0 и перенос в старший разряд, которого нет, переполнение разрядной сетки
т.е на языке Си это будет примерно так
(255+1)%256
теперь знаковое
-1(FF)+1(1)=1 00 тоже самое переполнение

теперь вычитание
255(FF)-1(1)=254(FE)
-1(FF)-1(1)=-2(FE)
как видишь никакой разницы в шестнадцатеричных значениях нет
и процессору они не нужны
это уже прерогатива языков высокого уровня ,при программировании на ассемблере программиста,
как интерпретировать числа с установленным старшим разрядом, как знаковое или как беззнаковое
кстати для знаковых возможны колизии которые нужно учитывать
C++
1
2
char a=127;
a++;// а стало -128
переполнение
чтобы этого не было нужно проверять результат
например
C++
1
2
3
4
5
char a=100;
char b= 100;
if(a+b<a)
  return error;
return a+b;
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru