Easyelectronics.ru

Электроника для всех
Текущее время: 15 окт 2018, 18:21

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: сложение и вычитание двоично-десятичных чисел
СообщениеДобавлено: 04 мар 2018, 20:28 
Заглядывает иногда

Зарегистрирован: 26 фев 2018, 03:06
Сообщения: 59
Уважаемые гуру , на просторах сайта наткнулся на статью Преобразуем в строку. Часть 1. Целые числа.
заинтересовала функция сложения упакованных двоично-десятичных чисел с хитрым побитовым колдовством :)
Код:
static uint32_t bcd_add(uint32_t a, uint32_t b)
{
/*1*/    uint32_t carry = b + 0x66666666ul;
/*2*/    carry ^= (a + carry) ^ a;
/*3*/    a += b;
/*4*/    carry &= 0x11111111ul;
/*5*/    carry >>= 2;
/*6*/    a += carry;
/*7*/    carry >>= 1;
/*8*/    a += carry;
    return a;
}

вопрос как это переделать для функции вычитания?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сложение и вычитание двоично-десятичных чисел
СообщениеДобавлено: 04 мар 2018, 23:08 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2524
Откуда: Санкт-Петербург
http://homepage.divms.uiowa.edu/~jones/bcd/bcd.html
Хотя нафига вам bcd - не понимаю. Проще (и, как правило, быстрее) преобразовывать двоичное в десятичное при выводе на экран.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сложение и вычитание двоично-десятичных чисел
СообщениеДобавлено: 04 мар 2018, 23:13 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2357
Как помню, практически все микросхемы RTC, которые встречал, имели как раз BCD-представление и передавали именно в этом формате.
Ну а вычитание заменяется сложением с отрицательным числом


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сложение и вычитание двоично-десятичных чисел
СообщениеДобавлено: 04 мар 2018, 23:21 
Заглядывает иногда

Зарегистрирован: 26 фев 2018, 03:06
Сообщения: 59
спб.
для работы с таймером упакованным в структуру
Код:
struct time_type{
   unsigned  secL  :4;
   unsigned  secH  :4;
   unsigned  minL  :4;
   unsigned  minH  :4;
   unsigned  hourL :4;
   unsigned  hourH :4;   
   }timer_work,timer_set;
сейчас для настройки сделан инкремент/декремент с шагом 1мин , нужно переделать на шаг 15сек.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сложение и вычитание двоично-десятичных чисел
СообщениеДобавлено: 05 мар 2018, 01:47 
Старожил
Аватара пользователя

Зарегистрирован: 11 авг 2016, 20:52
Сообщения: 576
Откуда: GMT+6
Show Я опять изобрел велосипед


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сложение и вычитание двоично-десятичных чисел
СообщениеДобавлено: 05 мар 2018, 04:17 
Заглядывает иногда

Зарегистрирован: 26 фев 2018, 03:06
Сообщения: 59
спасибо, Вам добрый человек


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB