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

 
 
26 страниц V  « < 10 11 12 13 14 > »   
Reply to this topicStart new topic
> Просто мнение, АВР -> АРМ
ArtemKAD
сообщение Jun 17 2009, 02:57
Сообщение #166


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
Что значить когда-нибуть? Уже! Полюбуйтесь на один из новых чипов и найдите слабое место
http://www.luminarymicro.com/products/lm3s9b95.html


Ну и ? Полюбовался. Большой, дорогой (больше 8$), жутко крутой, ... Вот только токи потребления в доке не указаны. Наверное, что-бы потенциальных клиентов заранее не пугать smile3046.gif ...
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 17 2009, 04:32
Сообщение #167


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(AHTOXA @ Jun 17 2009, 06:53) *
Хм...
main.c:
Код
#include <stdio.h>
[...]

hello!
bool = true
bool = true
bool = true
bool = false


Без обману, говорите? :-)

Интересный пример. smile.gif Поглядим. Согласно правилам языка (я по ++ным правилам разбираю, но думается, что в С99) оно так же.

Итак, инициалиация а = 2. Согласно правилам при присвоении булу результата арифметического выражения, если результат ноль, то присваивается false, иначе - true. Таким образом, после инициализации в а - true.

Далее. а = ~а Опять арифметическое выражение. При использовании була в арифметических выражениях он преобразоывается согласно правил к целому: если false, то в 0, если true - то в 1. У нас была true, значит при ~a имеем а преобразован (пусть int 16 бит) в 0x0001, а после инверсии - 0xfffe. Ну, и при присвоении обратно к булу - ненулевое значение преобразовывается в... правильно - в true. smile.gif

Дальше все так же. А вот когда вы применили логическую операцию - тут никаких преобразований к целому не последовало, и был получен логичный результат.

Никакого обмана. smile.gif


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jun 17 2009, 05:11
Сообщение #168


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(dxp @ Jun 17 2009, 10:32) *
Никакого обмана. smile.gif


Выкрутились smile.gif Я, помнится, всё это читал. Но забылsmile.gif А с позиции здравого смысла очень сложно принять, что ~(любой bool) - это true.
Но конечно этот bool лучше, чем ничего. Он даже индийское сравнение (if somevar == true) правильно обрабатывает:-)


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 17 2009, 05:48
Сообщение #169


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(AHTOXA @ Jun 17 2009, 09:11) *
Но конечно этот bool лучше, чем ничего. Он даже индийское сравнение (if somevar == true) правильно обрабатывает:-)

Не понял...
(if somevar != false) я ещё понимаю... а это как правильно обработать?


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 17 2009, 05:51
Сообщение #170


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(AHTOXA @ Jun 17 2009, 12:11) *
Выкрутились smile.gif Я, помнится, всё это читал. Но забылsmile.gif А с позиции здравого смысла очень сложно принять, что ~(любой bool) - это true.
Но конечно этот bool лучше, чем ничего. Он даже индийское сравнение (if somevar == true) правильно обрабатывает:-)

Ну, вы же помните разницу между & и && (| и ||, ~ и !). Вот тут и всплывает разница между bool и int. Достаточно помнить, что нативные операции над bool - это только лишь логические операции, а при использовании остальных начинаются преобразования типов со всеми вытекающими. Например, если вы целое присваиваете типу с плавающей точкой, то потенциально теряете точность. Это объяснимо и логично.

Имхо, вся сложность C/C++ как языков и содержиться в подобных нюансах, коих весьма немало. "Дьявол прячется в мелочах" (с) smile.gif


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
777777
сообщение Jun 17 2009, 06:48
Сообщение #171


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(AHTOXA @ Jun 17 2009, 09:11) *
А с позиции здравого смысла очень сложно принять, что ~(любой bool) - это true.

С позиции здравого смысла сложно понять, зачем к логическим переменным применять побитовые операции. Но если программист просит - компилятор честно их выполняет.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jun 17 2009, 06:51
Сообщение #172


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
С позиции здравого смысла сложно понять, зачем к логическим переменным применять побитовые операции.


С позиций здравого смысла вообще нет резона плодить лишние сущности типа bool.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 17 2009, 07:20
Сообщение #173


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



А может кто подскажет, уважаемые, где можно почитать про хитрый uint_fast8_t?
Этот тип что, обрабатывает байт как двойное слово, без накладывания масок?
Но как тогда будет обработан инкремент 0хff?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jun 17 2009, 07:25
Сообщение #174


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(sonycman @ Jun 17 2009, 10:20) *
А может кто подскажет, уважаемые, где можно почитать про хитрый uint_fast8_t?
Этот тип что, обрабатывает байт как двойное слово, без накладывания масок?
Но как тогда будет обработан инкремент 0хff?


<stdint.h> расскажет Вам обо всем. smile.gif Обратите внимание, что компилеру по барабану, как назовется этот хитрый тип, т.к. он не встроенный - все настройки на  платформенные особенности отданы на откуп прагмам и атрибутам. В общем, под таким углом зрения - ничего сложного и удивительного.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 17 2009, 07:33
Сообщение #175


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(_Pasha @ Jun 17 2009, 11:25) *
<stdint.h> расскажет Вам обо всем. smile.gif Обратите внимание, что компилеру по барабану, как назовется этот хитрый тип, т.к. он не встроенный - все настройки на  платформенные особенности отданы на откуп прагмам и атрибутам. В общем, под таким углом зрения - ничего сложного и удивительного.

Хм, получается, что uint_fast8_t есть просто dword.
На кой он нужен тогда. Можно сразу напрямую задать тип dword... rolleyes.gif
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jun 17 2009, 07:48
Сообщение #176


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(sonycman @ Jun 17 2009, 10:33) *
На кой он нужен тогда.   rolleyes.gif

На той, что:

1) Как портировать софтину с АВР-8бит на АРМ, если у исходной подавляющее большинство локальных переменных char, а если это перенести на 32-битовые регистры - получим оверхед по выделению байта ? Говорено-переговорено на эту тему.

2)Как только появляется необходимость в дополнительных атрибутах (т.е. оптимизация не может автоматом утоптать все конструкции, требуется явное указание на  способ обработки данных) - она отражается в stdint.h

Для программера ничего не меняется - он пользуется uint8_t когда надо явно указать размер (обмен с другими девайсами, например), и _fast и _least когда надо положить алгоритм оптимально на архитектуру. Лично я пока не сталкивался с острой необходимостью в uint_least8_t. Может кто прокомментирует, где оно применимо? Что до _fast - то тут все ясно - вычисления с использованием uint_fast8_t будут быстрее. 
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 17 2009, 07:53
Сообщение #177


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(Rst7 @ Jun 17 2009, 13:51) *
С позиций здравого смысла вообще нет резона плодить лишние сущности типа bool.

Вообще? Или там, где нет нативного типа?


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jun 17 2009, 08:07
Сообщение #178


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Вообще? Или там, где нет нативного типа?


Как по мне - так "вообще". Достаточно обычного С-шного соглашения о том, что ложь - ==0, истина - !=0.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 17 2009, 08:11
Сообщение #179


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



_Pasha
Спасибо, понятно.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 17 2009, 08:15
Сообщение #180


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(_Pasha @ Jun 17 2009, 10:25) *
<stdint.h> расскажет Вам обо всем. smile.gif

Да ну?
Код
typedef __UINT_FAST8_T_TYPE__ uint_fast8_t;

Что поняли из рассказа?
Цитата
...этот хитрый тип, т.к. он не встроенный...

или встренный. Только вот поведение тоже не всегда устраивает sad.gif Лисно у меня это кончилось тем, что завел свои типы, естественно и более-менее разбираюсь вручную, или по быстрому назначаю на них поминаемые fast8 least8


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

26 страниц V  « < 10 11 12 13 14 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 1st July 2025 - 15:47
Рейтинг@Mail.ru


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