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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Xserjik
0 / 0 / 0
Регистрация: 20.09.2013
Сообщений: 2
#1

Побитовое вычитание - C++

22.09.2013, 22:06. Просмотров 1573. Ответов 1
Метки нет (Все метки)

Здравствуйте. Задача сложить переменные, содержащих 2 машинных слова, используя только логические операции. Получилось такое чудо, однако результат на выходе стабильно в районе -13к.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int _tmain(int argc, _TCHAR* argv[])
{
 short v1=200,v2=150,m;
 int i,e=0;
  for (i=0;i<16;i++)
   {
    int y1,y2;
    y1=(v1&(1<<i))>>i;
    y2=(v2&(1<<i))>>i;
    m |= (y1^y2^e)<<i;
    if ((y1=0)&&(y2!=0))
        e=1;
    else if((y1!=0)&&(y2!=0))
    e=1;
 
        }
        cout<<"Rezultat:"<<m;
 
    system("pause");
Понимаю, что со сдвигами не до конца разобрался. Подскажите.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2013, 22:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Побитовое вычитание (C++):

Побитовое чтение - C++
Есть файл видео и мне известна его структура. Например структура следующая: 8 бит 1 бит 1 бит 1 бит 13 бит и т.д. Как мне...

Побитовое замещение - C++
Не могу что-то догнать. Есть int 0x 00 00 00 00 Как наиболее простым способом заместить одну из пар 4 бит другой? set( 1, 0x56 ) ...

побитовое увеличение - C++
Здравствуйте уважаемые пользователи. Это моя первая тема. Собственно суда я пришел за помощью. Так вот. Как побитово увеличить любое...

Побитовое сравнение - C++
Дан массив с десятичными числами, как сравнить (2ой,3ий,4ый и т.д.) бит 7 элемента с 1 элементом.

Побитовое представление числа - C++
Добрый вечер, подскажите, пожалуйста, каким образом можно сформировать число из нужных мне битов, скажем, есть 4 бита (0, 0, 0, 1), далее...

Побитовое считывание файла - C++
Стоит задача: Дан начальный файл любого формата (mp3,avi, и т.д.) Требуется считать его содержимое и представить его в виде битовой...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
22.09.2013, 23:13 #2
Текст программы почти не читал, но хочу сразу сказать: не стоит забывать, что существует знаковый и беззнаковый сдвиги. Если у вас тип перменной не имеет префикса unsigned, то будет использоваться знаковый сдвиг, который не берет в расчет первый знаковый бит

Добавлено через 21 минуту
Мое пятиминутное решение таково, могут быть и ошибки.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
int main()
{
    unsigned int x = 100, y = 100, summ = 0, mask = 1;
    bool rest; // флаг переноса на следующий разряд
 
    for (mask = 1, rest = false; mask != 0; mask <<= 1 )
    {
        summ |= (x & mask) ^ (y & mask);
        if (rest)
            summ ^= mask;
        if ((x & mask) && (y & mask))
            rest = true;
        else
            rest = false;
    }
 
    std::cout << summ << std::endl;
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2013, 23:13
Привет! Вот еще темы с ответами:

Побитовое представление числа. - C++
Всем привет, подскажите пожалуйста, нужно: Написать программу, которая принимает с клавиатуры число x, имеющее тип unsigned char и...

Побитовое смещение вправо с изюминкой - C++
Задание: Помогите, пожалуйста.

Побитовое чтение/запись в файл - C++
Добрый день. Мне нужно реализовать класс, который дает возможность побитовой записи/четения в/из файла. Я на самом деле не очень хорошо...

Работа с пикселями, побитовое копирование - C++
**Задание: Написать программу, осуществляющую побитовое копирование из одного изображения в другое. Изображение открывается через диалог...


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

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

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