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

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

Войти
Регистрация
Восстановить пароль
 
lips
2 / 2 / 0
Регистрация: 03.01.2012
Сообщений: 283
#1

Не учитывать знаковый бит - C++

10.01.2014, 18:11. Просмотров 211. Ответов 3
Метки нет (Все метки)

можно ли сделать чтобы вот это условие выполнилось?
C++
1
2
int a = -5;
if((a|0x0FFFFFFFFFFFFFFF)==5)
ну то что сейчас в условии глупость наверное, но если можно как то исправить подскажите как пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2014, 18:11     Не учитывать знаковый бит
Посмотрите здесь:

Старший бит C++
C++ Бит реверс
без знаковый double. Если ли чтоб можно было в шаблон пихать или самому сделать придется ? C++
Не учитывать регистр C++
C++ Обработать исходный файл и определить число каждого из символов (при этом регистр букв не учитывать, а цифры, знаки препинания и пробелы учитывать)
CUDA: Как учитывать ограничение в памяти видухи? Дайте совет по идеологии вычислений! C++
Дата не високосного года (31 декабря не учитывать). Вывести дату завтрашнего дня C++
Не учитывать перевод строки в регулярном выражении C++
C++ Депозитный калькулятор - как учитывать високосные года?
C++ Как учитывать пробелы при считывании строки в консоли?
Инверсия бит C++
переход с 32 бит на 64 бит C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12498 / 7060 / 792
Регистрация: 27.09.2012
Сообщений: 17,441
Записей в блоге: 2
Завершенные тесты: 1
10.01.2014, 18:17     Не учитывать знаковый бит #2
abs(a) == 5 ?
0x10
2442 / 1614 / 235
Регистрация: 24.11.2012
Сообщений: 3,961
10.01.2014, 18:17     Не учитывать знаковый бит #3
Допустим, нужно написать свою функцию получения модуля с использованием битовых операций...

Тут надо вспомнить, что отрицательные числа хранятся в дополнительном коде, поэтому просто так откинуть знаковый бит для получения модуля нельзя.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
int my_abs(int x)
{
    int y = (x >> 31);
    return (x ^ y) - y;
}
 
int main()
{
    int a = -5;
    if (my_abs(a) == 5)
    {
        std::cout << "true" << std::endl;
    }
}
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4252 / 2784 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
10.01.2014, 18:30     Не учитывать знаковый бит #4
Цитата Сообщение от 0x10 Посмотреть сообщение
C++
1
int y = (x >> 31);
дотошность конечно, но лучше б к sizeof(int) привязаться.
Yandex
Объявления
10.01.2014, 18:30     Не учитывать знаковый бит
Ответ Создать тему
Опции темы

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