реклама на сайте
подробности

 
 
> 32-битную переменную не получается заполнить двоичными единичками, Работаю в SDK от Xilinx, это допиленный Eclipse, компилятор GCC
Krys
сообщение Dec 25 2014, 03:15
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Здравствуйте. Работаю в SDK от Xilinx, это допиленный Eclipse, компилятор GCC.
У меня 32-битную переменную не получается заполнить двоичными единичками. Код такой:
Код
    unsigned int max_per = 0, min_per =
            (unsigned int)((unsigned long long)(1<<32)-(unsigned long long)1);

даёт ноль. Если сдвиг на 31, то единички есть, но 31 штука. Пробовал без преобразования типов - тоже ноль. Короче никак не могу его заставить.
Я понимаю, что можно просто записать 0xFFFFFFFF, но вопрос принципиальный, как заставить?


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Krys
сообщение Dec 26 2014, 07:02
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



есть мысль: может просто сдвиг циклический? Тогда всё сходится. Единичка сдвинутая на 32 разряда попадает на своё прежнее место, отнимаем единичку получаем ноль. Пока проверить не могу, позже.


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 26 2014, 07:29
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Krys @ Dec 26 2014, 10:02) *
есть мысль: может просто сдвиг циклический?

Если это так, то компилятор глючный донельзя :-)
Этого просто не может быть.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 26 2014, 10:26
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(scifi @ Dec 26 2014, 09:29) *
Если это так, то компилятор глючный донельзя :-)
Как раз нет. Все в пределах стандарта:
Цитата
3 The integer promotions are performed on each of the operands. The type of the result is
that of the promoted left operand. If the value of the right operand is negative or is
greater than or equal to the width of the promoted left operand, the behavior is undefined.


"Незнание закона не освобождает от ответственности".


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Krys   32-битную переменную не получается заполнить двоичными единичками   Dec 25 2014, 03:15
- - Xenia   Цитата(Krys @ Dec 25 2014, 06:15) Здравст...   Dec 25 2014, 03:27
- - Krys   Да, всё сработало, большое спасибо. Понимание-то я...   Dec 25 2014, 04:49
- - Xenia   Скажите, понимает ли ваш компилятор определения чи...   Dec 25 2014, 05:13
- - Krys   Спасибо и за эти подсказки. 1i64 - не понимает так...   Dec 25 2014, 07:53
- - Сергей Борщ   Кодuint32_t min_per = ~(uint32_t)0;   Dec 25 2014, 08:28
- - Krys   тоже идея ))   Dec 25 2014, 10:14
- - den_po   А можно узнать подробней о версии gcc? Вот резуль...   Dec 25 2014, 13:43
|- - scifi   Цитата(den_po @ Dec 25 2014, 16:43) Вот р...   Dec 25 2014, 14:53
|- - Krys   Цитата(den_po @ Dec 25 2014, 19:43) А мож...   Dec 26 2014, 03:18
|- - Krys   Цитата(scifi @ Dec 26 2014, 13:29) Если э...   Dec 26 2014, 08:25
||- - scifi   Цитата(Krys @ Dec 26 2014, 11:25) Да, дог...   Dec 26 2014, 08:44
|- - Krys   Цитата(Сергей Борщ @ Dec 26 2014, 16:26) ...   Dec 26 2014, 10:50
|- - scifi   Цитата(Сергей Борщ @ Dec 26 2014, 13:26) ...   Dec 26 2014, 12:15
- - den_po   Такое бывает, к сожалению   Dec 26 2014, 07:39
- - Krys   Ну вот посмотрите в сообщении #10 информацию о вер...   Dec 26 2014, 08:48
|- - scifi   Цитата(Krys @ Dec 26 2014, 11:48) Работае...   Dec 26 2014, 08:54
- - WitFed   А я в последнее время для FFFFFFFF пишу = 0-1, это...   Dec 26 2014, 13:16
- - Сергей Борщ   Цитата(WitFed @ Dec 26 2014, 15:16) Или я...   Dec 26 2014, 14:04


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 00:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01406 секунд с 7
ELECTRONIX ©2004-2016