Форум программистов, компьютерный форум 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++
Всем привет. Сейчас решаю задачу про шахматного коня по книжке Дейтелов. Там предлагается высчитать доступность каждой клетки и двигать коня туда, где доступность наименьшая. Чтобы ее рассчитать, надо, грубо говоря, из каждой клетки походить конём. Идея, как считать доступность уже есть, выглядит она примерно так (тут как минимум нет проверки границы массива): //board - двумерный массив,...
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). В каждой из них члены различны. Верно, ли что все члены второй последовательности входят в первую последовательность? У меня всё время пишет, что входит, хотя и разные числа в обоих массивах забиваю. Вот код, если кого не затруднит, подскажите, где я что пропустил #include<iostream.h> #include<windows.h>...
C++ char[] #include <iostream> using namespace std; #define N 4 #define S 2 int main() { int rate; int s=0; подробнее

Показать сообщение отдельно
ValeryS
Модератор
6543 / 5009 / 462
Регистрация: 14.02.2011
Сообщений: 16,656
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;
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru