Easyelectronics.ru

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

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



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

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

Зарегистрирован: 26 фев 2018, 03:06
Сообщения: 110
Уважаемые гуру , на просторах сайта наткнулся на статью Преобразуем в строку. Часть 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
Сообщения: 2619
Откуда: Санкт-Петербург
http://homepage.divms.uiowa.edu/~jones/bcd/bcd.html
Хотя нафига вам bcd - не понимаю. Проще (и, как правило, быстрее) преобразовывать двоичное в десятичное при выводе на экран.


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

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


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

Зарегистрирован: 26 фев 2018, 03:06
Сообщения: 110
спб.
для работы с таймером упакованным в структуру
Код:
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
Сообщения: 627
Откуда: GMT+6
Show Я опять изобрел велосипед


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

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


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

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


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

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


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

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

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