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

Заполнение левых битов при сдвиге вправо - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ с++ Кольцо (контейнер), шаблоны, ромбовидное наследование http://www.cyberforum.ru/cpp-beginners/thread1025263.html
Здравствуйте! Нужна ваша помощь в c++. Дали задание организовать ромбовидное наследование и контейнер (кольцо). С первым проблем нет. А со вторым большие проблемы. Все написал, но вот ошибки с кольцом преследуют и именно проблемы с добавлением в кольцо. Помогите пожалуйста. Вот ссылка на архив с проектом http://yadi.sk/d/Fe_4cg6ZDdn4m Добавлено через 22 минуты Вот из файла Ring.h #pragma...
C++ Работа с текстовым файлом в Visual Studio Программа компилится, но не может открыть файл studenti.txt. Куда этот файл точно кидать, что бы программа его находила? #include <stdio.h> #include <conio.h> #include <string.h> //libraries #include <windows.h> #include <iostream> #define N 20 http://www.cyberforum.ru/cpp-beginners/thread1025257.html
Поиск в глубину C++
Помогите с заданием пожалуйста. Число 1 можно записать как сумму n чисел вида 1 / i, где i - натуральное число. Например, для n = 3 имеем 1 = 1/2 +1 / 4 +1 / 4. Найти способы записи числа 1 для заданного n методом поиска в глубину.
C++ Эвристика. Рюкзак Алладина.
Помогите с заданием пожалуйста. Разработать алгоритм и написать программу для задания Алладина: сколько ценных вещей (заданных массе и цене) может поместиться в рюкзак (заданный объем) Алладина.
C++ Составить функцию вычисления суммы http://www.cyberforum.ru/cpp-beginners/thread1025250.html
Прошу помощи, не понимаю, как записать числитель, что означает это троеточие? Заранее спасибо!
C++ Конвертация из heximal в int Нужно написать функцию для конвертации строки, представленной как heximal, в int. Например: Вход: char * pStr = "0xFF"; Выход: int iRes = 255; подробнее

Показать сообщение отдельно
kebal
9 / 9 / 0
Регистрация: 02.11.2012
Сообщений: 153

Заполнение левых битов при сдвиге вправо - C++

02.12.2013, 15:20. Просмотров 538. Ответов 4
Метки (Все метки)

Собственно по идее если число отрицательное, то при сдвиге вправо левые биты заполняются единицами, если положительное, то нулями.
Но вот при выполнении следующего кода
C++
1
2
3
int x = -250000000;
cout << (x >> 8) << endl;
cout << ((x & 0xFF000000) >> 24) << endl;
Когда сдвигаю первый раз на 8 битов, то левые биты заполняются единицами.
Когда второй раз сдвигаю на 24 бита, то левые биты заполняются нулями, хотя (x & 0xFF000000) даёт отрицательное число.
Почему так произошло?

Сейчас ещё потестировал, и вот более точная формулировка.
Следующие две строки выводят разный результат, хотя должны давать одинаковый.
C++
1
2
cout << (x >> 24) << endl;
cout << ((x & 0xFFFFFFFF)>> 24) << endl;
Добавлено через 10 часов 29 минут
Граждане гуру, неужели ни у кого нет ответа?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru