Easyelectronics.ru

Электроника для всех
Текущее время: 19 фев 2020, 11:33

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



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

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

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


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

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


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

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


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

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


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


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


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

Сейчас этот форум просматривают: demiurg1978, sdv_cyborg


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

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

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