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

Побитовые операции сдвига - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сам ассистанс гайс http://www.cyberforum.ru/cpp-beginners/thread1058036.html
При работе программы вылетает ошибка Необработанное исключение по адресу 0x00DD5061 в projectX.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x00000000. Происходит после вывода...
C++ Содержимое текстового файла разбить на предложения Пусть есть текстовый файл содержащий текст в 50 строках (Создается вручную в блокноте) Считать содержимое этого файла Содержимое разбить на предложения Предложение начинается с большой буквы и... http://www.cyberforum.ru/cpp-beginners/thread1058031.html
Поменять местами наибольший и наименьший элементы массива C++
сроки поджимают, а вчера я еще потерял флэшку с кривой и забагованной первой функцией этой программы. руки совсем опустились, последняя надежда -- вы, форумчане в точности перепишу условие: -----...
Используя указатели, сформировать вещественный массив C++
доброго времени суток . такая задача двумерный массив размер 3 на 4 (тоесть вектор векторов). Используя указатели , сформировать вещественный массив с размером 4 используя условие . условие. Sjt...
C++ Написать рекурсивную функцию для перестановки цифр в числе http://www.cyberforum.ru/cpp-beginners/thread1058003.html
не могу понять как это сделать, может подскажете?
C++ в первом модуле определёна квадратная матрица четвёртого порядка в первом модуле определёна квадратная матрица четвёртого порядка. Выводится изменённая матрица построчно. во втором модуле все элементы последней строки уменьшаются на соответствующие элементы... подробнее

Показать сообщение отдельно
xoror
29 / 31 / 2
Регистрация: 15.12.2013
Сообщений: 147

Побитовые операции сдвига - C++

26.12.2013, 20:55. Просмотров 592. Ответов 8
Метки (Все метки)

Как работают операции сдвига вправо? Я всегда считал что освобождающиеся левые биты заполняются нулями. Оказывается это не всегда так. Если число отрицательное, то эти биты заполняются единицами, т.е. знаковым битом. Это что получается, что освободившиеся биты всегда заполняются именно самым старшим битом или как?

Вот пример программы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <windows.h>
#include <stdio.h>
 
 
int WINAPI WinMain(HINSTANCE,  HINSTANCE,  LPSTR,  int)
{
    SHORT       value       = 0x8004;   // 1000 0000 0000 0100 = отрицательное число
    value >>= 2;                        // 1110 0000 0000 0001 = -8191
                                        // 0001 1111 1111 1110
                                        // 0001 1111 1111 1111 = 8191
 
    char        szText[50];
 
    wsprintf(szText,  "%d",  value);
    MessageBox(NULL,  szText,  "",  MB_OK); // -8191 !! Отрицательное число
 
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.