Jump to content

Вопросы от начинающих по МК


Recommended Posts

34 минуты назад, IMXO сказал:

это все лишь ваши фантазии

Гражданин, очевидно, путает си с ассемблером. Это там написал какой-нибудь RLF F, D, процессор это и будет делать.

Edited by LiVit
Link to comment
Share on other sites

2 минуты назад, IMXO сказал:

это все лишь ваши фантазии, компилятор не будет создавать ни какой переменной и  ни какого выделения памяти под нее тоже не будет ,

Именно компилятор. Поэтому ФАНТАЗИИ именно что ВАШИ:    НЕЗНАЧАЩИМ БИТАМ   там взятся будет НЕОТКУДА и вот этого:

36 минут назад, IMXO сказал:

2,  в двоичном представлении для размера байт (char, uint8_t, int8_t) именно 0b00000010

ничего не будет. В нотиции (x<<x) нигде не говориться о типе данных. Поэтому никаких незначащих нулей перед единицей НЕ БУДЕТ, комманда (х<<у) не создает в памяти  переменную определяемого пользователем типа.

Link to comment
Share on other sites

34 минуты назад, dasZebra сказал:

ничего не будет. В нотиции (x<<x) нигде не говориться о типе данных. Поэтому никаких незначащих нулей перед единицей НЕ БУДЕТ, комманда (х<<у) не создает в памяти  переменную определяемого пользователем типа.

Компилятор, дорогой гражданин, немного умнее вас будет. И размерность данных будет подогнана под контекст.
Сравните:
for(uint8_t c=1; c<10; c= c<<1)
и
for(uint16_t c = 1; c<10; c = c<<1)

В первом случае, по ходу выполнения цикла будет так: b00000001, b00000010, b00000100
Во втором случае так: b0000000000000001, b0000000000000010, b0000000000000100

Тоже самое, компилятор разберется и в таком случае:
uint8_t a;
uint16_t b;

a = (1<<2);    //a = b00000100
b = (1<<2);    //b = b0000000000000100

 

PS и что, черт возьми, это такое - "нотиция"???
Такое ощущение, что вы пытаетесь придать своим словам солидности путем использования наукообразных слов, но выходит только хуже.
Пишите проще.

Edited by LiVit
Link to comment
Share on other sites

Вебинар «Новые тенденции сетевых технологий: Ethernet по одной витой паре» (09.12.2021)

Приглашаем 9 декабря всех желающих посетить вебинар, посвященный технологии Ethernet и её новому стандарту 10BASE-T1S/L. Стандарт 802.3cg описывает передачу данных на скорости до 10 Мбит в секунду по одной витой паре. На вебинаре будут рассмотрены и другие новшества, которые недавно вошли в семейство технологий Ethernet: SyncE, PTP, TSN. Не останется в стороне и высокоскоростной 25G+ Ethernet от Microchip.

Подробнее

DC/DC-преобразователи Mornsun со склада Компэл

В сложный период для рынка электронных компонентов, когда производители увеличивают сроки поставки продукции, со склада Компэл можно приобрести широкий ассортимент DC/DC-преобразователей производства компании Mornsun. На складе представлены наиболее популярные семейства изолированных и неизолированных DC/DC-преобразователей новых поколений R3 и R4, а также предыдущего, но по-прежнему востребованного поколения R2.

Подробнее

2 hours ago, Юрий_Нд said:

у них есть проверенный прием

Желаю, чтобы этот прием был и вас. Книжку надо читать, прежде чем бежать на форум с глупым вопросом, а потом упорно демонстрировать свои безграмотность, "остроумие" и нежелание учиться. 

Лентяям напомню, что выражение (1<<0) - это бинарная операция, результат которой равен числу, полученному в результате сдвига первого операнда (число 1) влево на количество битов, равное второму операнду (0). Оба операнда должны быть целыми числами. Например, (254<<122) или (b10011101<<b10000111).  Из этого следует, что число "1" взялось не из воздуха или божественного промысла, оно в явном виде прописано в выражении в скобке.

Link to comment
Share on other sites

Теперь более 300 наименований: новое поступление Connfly на склад Компэл

Компэл объявляет о значительном расширении складского ассортимента продукции Connfly. Универсальные коммутирующие компоненты, соединители и держатели Connfly сочетают соответствие стандарту ISO9001:2008, высокую доступность и простоту использования. На текущий момент на складе Компэл – более 300 востребованных на рынке товарных наименований с гибкой ценовой политикой.

Подробнее

2 часа назад, LiVit сказал:

Компилятор, дорогой гражданин, немного умнее вас будет. И размерность данных будет подогнана под контекст.

Меня часто спрашивают, почему мы просрали космос, электронику и прочее машиностроение.  Я честно отвечаю, что виноват лично  я и то, что у нас появился  интернет. Теперь всем умным людям некогда работать, потому что они очень заняты, обучаяя в интернете меня неразумного. Да, вот так и живем.

Вопрос к  @LiVit, а как Ваш умный компилятор "подгонит под контест", если объявить Ваши переменные каким нибудь  float или double? 

 

Link to comment
Share on other sites

Управляемый светодиодный драйвер на базе компонентов ST

ST предлагает готовое решение, адаптируемое под конкретную задачу, двухмодульный отладочный комплект на базе контроллера HVLED001B для разработки светодиодного драйвера светильника наружного освещения с дистанционным управлением по сети 6LoWPAN.

Подробнее

1 час назад, dasZebra сказал:

а как Ваш умный компилятор "подгонит под контест", если объявить Ваши переменные каким нибудь  float или double? 

никак, он пошлет вас в эротическое путешествие в поисках целочисленного типа.

Link to comment
Share on other sites

1 час назад, dasZebra сказал:

Вопрос к  @LiVit, а как Ваш умный компилятор "подгонит под контест", если объявить Ваши переменные каким нибудь  float или double? 

Зёбра, зачем вы просрали космос? Да и всё остальное тоже? Нехорошо...

Вы лично, что хотите тут доказать? Напомню, разговор шел про целые числа, которые в микроконтроллерах представляются байтами, 16 и 32 битными словами. Float штука синтетическая. При помощи 32 бит пытаются изобразить не целые числа. И "умный" компилятор воспринимает выражение float a = (1<<0); как единицу в представлении float. Удивительно, правда?  Это называется неявное приведение типа. Почитайте на досуге.

А вот сделать a = a<<1; в данном случае не получится. Потому что это логическая, побитовая операция. Можно вот так: a = (float)((uint32_t)a<<1); Число сначала приведется к целочисленному типу uint32_t (при этом, дробная часть будет отброшена), потом сдвинется на 1 бит, а затем опять приведется к типу float.

Надеюсь, вам теперь стало немного понятнее? И теперь можно не беспокоиться за космос и прочее?

Замечу, что число 1 в float представлено в виде 0x3F800000. И до него конечно же можно добраться средствами Си, хотя он изо всех сил сопротивляется.
Например:
    float a = 1;
    uint32_t *b;
    b = (uint32_t*)&a;
    //теперь b указывает на число 0x3F800000

Если сделать так: *b = *b<<1; то a после этого будет содержать чУдную цифру 1.70141183e+038

Edited by LiVit
Link to comment
Share on other sites

30 минут назад, IMXO сказал:

никак, он пошлет вас в эротическое путешествие в поисках целочисленного типа.

Нет почти никаких проблем присвоить сложному типу значение простого типа. 

Однако присвоить ему занчение (x<<y) нельзя. Это ли  не докозательство того что  (x<<y)  вобщем то не совсем  число?

 

@LiVit напомню что разговор о том что 

6 часов назад, dasZebra сказал:

(1<<0) конечно все же отличается от 0b00000001. (1<<0) это 1 и все. А например (1<<1) это не 0b00000010 а всего лишь 10. 

а не о том, о чем Вам там где то что то подумалось.

Edited by dasZebra
Link to comment
Share on other sites

29 минут назад, dasZebra сказал:

Однако присвоить ему занчение (x<<y) нельзя. Это ли  не докозательство того что  (x<<y)  вобщем то не совсем  число?

    float a = 0x00;
    uint8_t x = 1;
    uint8_t y = 2;

    a = (x<<y);

Компилятор не ругается, программа выполняется, результат: a равно 4.
Что я делаю не так?

Зебра, я искренне надеюсь, что вы не программируете за деньги. В смысле, что это не ваша профессия. В противном случае, я очень не хотел бы иметь дело с устройствами, в которых ваши программы будут работать.

Link to comment
Share on other sites

5 минут назад, LiVit сказал:

Компилятор не ругается, программа выполняется, результат: a равно 4.
Что я делаю не так?

Вам вам стоит бы прежде всего  себя, вообще неависимо от рода Вашей деятельности.  То, что Ваша программа выполняется, совершенно не означает что Вы понимаете суть разговора.

15 минут назад, LiVit сказал:

очень не хотел бы иметь дело с устройствами, в которых ваши программы будут работать.

Эт кстати да, сам боюсь на аэрбасах летать... утешает одно, я в 2005м всего лишь архитектором и немного тестировщиком подвизался, да и то не по своей воле, и прям что бы кодить - такого не было.

Но тупизмов успел понаглядеться.

Link to comment
Share on other sites

1 час назад, dasZebra сказал:

то ли  не докозательство того что  (x<<y)  вобщем то не совсем  число?

ага, а "СЛАВА КПСС" - вообще не человек.

Мудрость приходит вместе с импотенцией...

Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.

Link to comment
Share on other sites

7 hours ago, dasZebra said:

(x<<y)  вобщем то не совсем  число

Самое что ни на есть число :D 

Хватит уже троллить, тема-то для начинающих. А Юрий_Нд вообще вон испугался и пропал :lol2:

10 hours ago, _abk_ said:

выражение (1<<0) - это бинарная операция, результат которой равен числу, полученному в результате сдвига первого операнда (число 1) влево на количество битов, равное второму операнду (0).

 

Link to comment
Share on other sites

3 часа назад, dasZebra сказал:

Нет почти никаких проблем присвоить сложному типу значение простого типа. 

Однако присвоить ему занчение (x<<y) нельзя. Это ли  не докозательство того что  (x<<y)  вобщем то не совсем  число?

их вообще нет , потомущта значение (x<<y) есть целочисленная константа , и естественно здесь под Х и У подразумеваются целые числа в десятичном формате. а не ваши фантазии о флоат.
при этом Х и У по дефолту имеют размерность uint16
 

Link to comment
Share on other sites

20 минут назад, _abk_ сказал:

А Юрий_Нд вообще вон испугался и пропал

Он не испугался и не пропал. Он затроллил всех, а теперь сидит и смотрит на результат со стороны, ехидно ухмыляясь :lol:

Link to comment
Share on other sites

Во-первых хочу обратиться ко всем участникам этого форума:
1. Извиняюсь, был неправ, заблуждался.
Теперь я знаю почему (1<<0) = 0b0000 0001. И теперь я в это не просто верю, как делал это раньше, а точно знаю это и могу объяснить/пояснить любому желающему.
2. Интернетом не пользовался, книжки умные по этому вопросe не читал, просто взял листочек с карандашиком и написал:
(1<<6)=(16<<2)=(4<<4)=64 
верно?
3. LiVit, как Вы думаете Керниган и Ричи могут мне сказать что-либо новое и неизвестное именно по этому вопросу?
4. LiVit, я прекрасно понимаю, знаю что вы мне хотите сказать. Я же в ответ на Ваши аргументы хочу сказать, что у меня сейчас одна цель. Это написать рабочий д****** код, который будет считать Ампер*часы и Ватт*часы. Желательно так, чтобы в моей программе не было непонятных мне мест. Я думаю, что с сегодняшнего дня таких мест нет вообще.
5. LiVit,  простите я не помню, кто-то стёр все мои, и не только мои сообщения за последние полтора месяца, это Вы обещали мне посмотреть мой код?
6. LiVit, а в чём заключается моя агрессия? Я кого-то обидел, обозвал? Меня называли дураком, это правда, это было. И не только дураком.

Edited by Юрий_Нд
Link to comment
Share on other sites

15 часов назад, dasZebra сказал:

это не 0b00000010 а всего лишь 10.

 

9 часов назад, dasZebra сказал:

(x<<y)  вобщем то не совсем  число

Ну вот человек тоже искренне заблуждается (я вот например хоть что-то понял, а человек похоже так ничего и не понял), он что, тоже т-р-о-л-ь?
А может в конце концов уже нужно посмотреть на название темы?

Edited by Юрий_Нд
Link to comment
Share on other sites

Блин, а я думал, что человек тут пишет ради "пофилософствовать". Ан нет, он действительно не врубается ... :huh:

 

20 минут назад, Юрий_Нд сказал:

(1<<6)=(16<<2)=(4<<4)=64 
верно?

Вот зачем Вы этой кашей забиваете себе голову ? Зачем эти (на взгляд, совсем нелогичные) преобразования ?
Если Вам нужно узнать результат выражения "1<<6", то просто нарисуйте битики, в которых в 0-вом разряде будет "1", все остальные - "0". И двигайте всю эту "картину" влево 6 раз. Всё, результат получен.
Ну, или, просто запомните. Это выражение будет равняться числу, с единичкой в 6-ом бите.

Link to comment
Share on other sites

15 минут назад, Alex сказал:

нелогичные) преобразования

А причём тут логика?
Я просто хочу сказать, что всё это числа. И смотреть на это всё нужно, как на числа.
Я просто попытался записать эти числа в различной форме представления.
Вот и всё.

18 минут назад, Alex сказал:

Ну, или, просто запомните.

Ещё раз попытаюсь пояснить.
Это ещё вчера я принимал всё это на веру, а сегодня ёлки-палки, прозрел. Можете считать, что видение у меня было.
Теперь у меня есть всему этому хозяйству логическое пояснение. 
И я просто попытался показать чудеса этой логики.
Только и всего.

А ещё, согласно этой логике, можно записать:
PORTD |= (1<<6);
можно:
PORTD |= (4<<4);
а можно и 
PORTD |= 64;

... и все это будут "однохренственные " операции.

Link to comment
Share on other sites

35 минут назад, Alex сказал:

Если Вам нужно узнать результат выражения "1<<6", то просто нарисуйте битики, в которых в 0-вом разряде будет "1", все остальные - "0". И двигайте всю эту "картину" влево 6 раз. Всё, результат получен.
Ну, или, просто запомните. Это выражение будет равняться числу, с единичкой в 6-ом бите.

это да, вопросов нет, так и будет. вопрос в том какое значение будет когда

unsigned long int a=(1<<18);

B)
 

Link to comment
Share on other sites

2 часа назад, _abk_ сказал:

Юрий_Нд вообще вон испугался

... "не-а", он не из пугливых.

5 минут назад, IMXO сказал:

какое значение будет когда


unsigned long int a=(1<<18);

... да хоть unsigned long int a=(1<<32);

а вот unsigned long int a=(1<<33);

это уже "фигвам называется"

Link to comment
Share on other sites

9 минут назад, Юрий_Нд сказал:

... да хоть unsigned long int a=(1<<32);

да, давай дерзай, протез у тебя есть, о результатах отпишешься :D

Link to comment
Share on other sites

13 минут назад, IMXO сказал:

протез у тебя есть

Proteus 8.9 у меня есть, а вот цифрового осциллоскопа нет. Может подскажешь где его раздобыть?
Или это нужно только версию "поновей ставить"?

... знаешь какую?

1 - Обменник - 45.png

... если-что, вот такой хочу.

1 - Обменник - 46.png

Edited by Юрий_Нд
Link to comment
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...