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

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

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

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

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

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

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

компилятор mingw Битовая арифметика
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
06.12.2013, 07:25  [ТС]     Битовая арифметика #13
el_gato_de_Ch, что за программка в которой кодишь?
taras atavin
Ушёл с форума.
 Аватар для 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.
У отрицательных чисел старший бит единичный, а здесь по идее нулевой.
el_gato_de_Ch
35 / 35 / 1
Регистрация: 28.04.2013
Сообщений: 110
06.12.2013, 07:48     Битовая арифметика #15
nexen, Sublime text, обычный текстовый редактор, с кучей полезных фич, компилю через командную строку.

пришли весь сырец, мб не в этом дело у тебя ...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2013, 08:04     Битовая арифметика
Еще ссылки по теме:

64-битовая строка C++
С, битовая запись C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6378 / 4844 / 442
Регистрация: 14.02.2011
Сообщений: 16,066
06.12.2013, 08:04     Битовая арифметика #16
Цитата Сообщение от nexen Посмотреть сообщение
mask = 0x00 00 00 01;
прям так и писал с пробелами?
А вообще для таких вещей есть отладчик
Yandex
Объявления
06.12.2013, 08:04     Битовая арифметика
Ответ Создать тему
Опции темы

Текущее время: 14:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru