Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
1

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

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

Почему при:
C++
1
2
int myVar = 15, mask = 0x00 00 00 01; //выделил разряды
printf("%d", myVar & mask);
Я получаю -1? Конечно, я мог бы вывести через %u, но мне интересен сам факт "-1". Разве после этой операции не должно было получиться число 000....001 = 1?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2013, 18:54
Ответы с готовыми решениями:

собрать число , битовая арифметика
Помогите пожалуйста, а то с битовой арифметикой проблемы, получаю из color числа его каналы по...

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

Битовая переменная
#include <avr/io.h> #include <avr/pgmspace.h> #include <avr/delay.h> struct LEDValu { ...

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

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

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

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

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

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

пришли весь сырец, мб не в этом дело у тебя ...
0
Модератор
Эксперт по электронике
8274 / 6133 / 822
Регистрация: 14.02.2011
Сообщений: 21,327
06.12.2013, 08:04 16
Цитата Сообщение от nexen Посмотреть сообщение
mask = 0x00 00 00 01;
прям так и писал с пробелами?
А вообще для таких вещей есть отладчик
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2013, 08:04

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

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

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

Битовая сортировка!
Всем привет. Нужно написать реферат по теме "Битовая сортировка". Такого в инете, а также...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

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