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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
#1

Битовая арифметика - C++

05.12.2013, 18:54. Просмотров 1147. Ответов 15
Метки нет (Все метки)

Почему при:
C++
1
2
int myVar = 15, mask = 0x00 00 00 01; //выделил разряды
printf("%d", myVar & mask);
Я получаю -1? Конечно, я мог бы вывести через %u, но мне интересен сам факт "-1". Разве после этой операции не должно было получиться число 000....001 = 1?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2013, 18:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Битовая арифметика (C++):

собрать число , битовая арифметика - C++
Помогите пожалуйста, а то с битовой арифметикой проблемы, получаю из color числа его каналы по следующей формуле R = (color >> 16) &...

Битовая инверсия - C++
Доброго времени суток! Я что-то запутался с побитовой инверсией. В коде прописываю int a=5; cout<<~a<<endl; Это же...

Битовая сортировка! - C++
Всем привет. Нужно написать реферат по теме "Битовая сортировка". Такого в инете, а также Википедиях и прочих джерелах даже примерно не...

Битовая маска - C++
Как в шифровании битовыми перестановками применить маску?

Битовая операция -> - C++
Что делает операция -> К примеру, есть структура: struct BIT{ unsigned int cod1:3; :1;...

С, битовая запись - C++
Всем доброго времени суток, после 3 дней поиска информации решил попытать счастье, задав вопрос у форумчан. так же читал много подобных...

15
stima
485 / 337 / 38
Регистрация: 22.03.2011
Сообщений: 1,079
Завершенные тесты: 2
05.12.2013, 19:23 #2
Дело в хранении знака (так как %d - signed int). Например на gcc 4.8.1 ubuntu 13.04 это 1.
0
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
05.12.2013, 19:28  [ТС] #3
stima, как раз написал, что это меня не интересует и я мог бы вывести, как %u и так далее. Интересует почему получается -1, ведь он равен 1000..00001, а не 000..0001
0
stima
485 / 337 / 38
Регистрация: 22.03.2011
Сообщений: 1,079
Завершенные тесты: 2
05.12.2013, 20:06 #4
C++
1
2
int value = 0x00 00 00 01;
printf("%d", value);
Пожалуйста выполните.
1
el_gato_de_Ch
35 / 35 / 1
Регистрация: 28.04.2013
Сообщений: 110
05.12.2013, 20:10 #5
если я ничего не путаю то -1 = 0xFF FF FF FF,
1
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
05.12.2013, 20:21  [ТС] #6
stima, 1

Добавлено через 34 секунды
el_gato_de_Ch, вот и я о том же. Вроде как в доп. коде же хранятся числа
0
stima
485 / 337 / 38
Регистрация: 22.03.2011
Сообщений: 1,079
Завершенные тесты: 2
05.12.2013, 20:41 #7
а какой компилятор, платформа?
1
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
05.12.2013, 20:42  [ТС] #8
stima, clone от MS_VS. x86.
0
stima
485 / 337 / 38
Регистрация: 22.03.2011
Сообщений: 1,079
Завершенные тесты: 2
05.12.2013, 20:49 #9
Возмоно "компиляторо" зависимая "фича".

п.с. Я о таком компиляторе впервые слышу, даже нагуглить не могу.
1
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
05.12.2013, 21:16  [ТС] #10
stima, интегрированный в visual studio. cl.exe вроде как его исполняшка.
0
stima
485 / 337 / 38
Регистрация: 22.03.2011
Сообщений: 1,079
Завершенные тесты: 2
05.12.2013, 21:35 #11
Понятно, нету такого компилятора как clone (покрайне мерее более или менее известного).
cl.exe это microsoft comand line compiler, более известен как mscc (microsoft c++ compiler) или даже msvc (microsoft visual c++) из-за ide

п.с. Что же касается вашего вопроса, то он остается загадкой)
1
el_gato_de_Ch
35 / 35 / 1
Регистрация: 28.04.2013
Сообщений: 110
06.12.2013, 05:24 #12
прям скопировал

компилятор mingw Битовая арифметика
1
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
06.12.2013, 07:25  [ТС] #13
el_gato_de_Ch, что за программка в которой кодишь?
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
06.12.2013, 07:42 #14
Цитата Сообщение от stima Посмотреть сообщение
Дело в хранении знака (так как %d - signed int). Например на gcc 4.8.1 ubuntu 13.04 это 1.
У отрицательных чисел старший бит единичный, а здесь по идее нулевой.
0
el_gato_de_Ch
35 / 35 / 1
Регистрация: 28.04.2013
Сообщений: 110
06.12.2013, 07:48 #15
nexen, Sublime text, обычный текстовый редактор, с кучей полезных фич, компилю через командную строку.

пришли весь сырец, мб не в этом дело у тебя ...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2013, 07:48
Привет! Вот еще темы с ответами:

битовая маска - C++
как использовать битовую маску? за пример можно взять выделение k-того разряда из n-разрядного числа (в пофиг какой системе исчесления).

битовая маска - C++
надо разработать функцию проверки правильности битовой маски. 32-х битная “маска” считается действительной, если ее двоичное...

64-битовая строка - C++
Необходимо реализовать структуру 64-битовой строки состоящей из двух unsigned long полей, с последующей возможностью использования битовых...

Битовая операция с отрицательным числом - C++
Есть такой код int main() { int k = 12; cout << (k & -k); return 0; } Выводит этот код


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
06.12.2013, 07:48
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru