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

 
 
> 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
Ответов
den_po
сообщение Dec 25 2014, 13:43
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



А можно узнать подробней о версии gcc?

Вот результат выражения из первого поста http://ideone.com/tM7rbC
Ну и вот без лишнего приведения типов http://ideone.com/xqRct2
Go to the top of the page
 
+Quote Post
Krys
сообщение Dec 26 2014, 03:18
Сообщение #3


Гуру
******

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



Цитата(den_po @ Dec 25 2014, 19:43) *
А можно узнать подробней о версии gcc?

Код
c:\Xilinx\14.7\ISE_DS\EDK\gnu\microblaze\nt\bin>mb-gcc --version
mb-gcc (GCC) 4.6.4 20120924 (Xilinx 14.1 Build EDK_P.13 28 Sep 2013)
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.



Цитата(scifi @ Dec 25 2014, 20:53) *
Кстати, да. Ведь вполне ожидаемо, что "(unsigned)-1" даст 0xFFFFFFFF.
Хм... действительно, если разобраться, странно... Даже если у меня 32-битная единичка, я её сдвинул за пределы разрядной сетки, получил ноль. Потом единичку отнимаю от нуля. Получаю 0xFFFFFFFF. Косяк ещё и в том, что обычно компилятор давал ворнинг, что сдвигание привело к выходу за пределы разрядной сетки. А в этом случае не поругался.


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
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
|- - scifi   Цитата(den_po @ Dec 25 2014, 16:43) Вот р...   Dec 25 2014, 14:53
- - Krys   есть мысль: может просто сдвиг циклический? Тогда ...   Dec 26 2014, 07:02
|- - scifi   Цитата(Krys @ Dec 26 2014, 10:02) есть мы...   Dec 26 2014, 07:29
|- - Krys   Цитата(scifi @ Dec 26 2014, 13:29) Если э...   Dec 26 2014, 08:25
||- - scifi   Цитата(Krys @ Dec 26 2014, 11:25) Да, дог...   Dec 26 2014, 08:44
|- - Сергей Борщ   Цитата(scifi @ Dec 26 2014, 09:29) Если э...   Dec 26 2014, 10:26
|- - 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 Текстовая версия Сейчас: 23rd July 2025 - 06:28
Рейтинг@Mail.ru


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