бін 2 BCD

G

Guest

Guest
Привет!
Кожен бачив в Інтернеті С-програма для перетворення 24-бітного BIN в BCD форматі?
Спасибо.
Олександр.

 
Привет Александр, я думаю, що convertin в 24bit двійкове число в BCD формат аналогічний 8bit BIN2BCD.

символ I; / / боротьбі
Двійковий знаків [3] / / двійкове число
символ BCD [3] / / BCD число
для (i = 0; I <3; I )
(
BCD = BIN2NCD (Двійковий );
)

статичні BIN2BCD байт (байт BIN)
(
повернути ((((BIN/10) <<4)
І 0xF0) | ((BIN 10%)
И 0x0F));
)

 
Здравствуйте, Кікі!
Он что-то не так з вашою програмою.Вона працює uncorrect (може бути я сделать что-то неправильно, я не знаю).
У мене є програма конверсії 17 бітний двійкові 5 цифр BCD (до 99 999).
Ось вона:

INT TenK, ти Hund, десятки, єдності;
Непідписані INT NUM [3];

BIN2DEC недійсним (недійсними)
(
/ / Працює на глобальні змінні:
/ /
Встановлення NUM [0] - [2] (Lo-привет) перед викликом
/ / Повертає з TenK ... єдності набір з 0-9

Непідписані INT А0, A1, A2, A3, A4;
Непідписані INT T1, T2, T3; / / блокнот змінних

/ / Виділити 4 біта nibbles
/ /
Для цілей цієї звичайні, A4 може бути тільки 0 або 1
a4 = NUM [2];
a3 = NUM [1] / 16;
a2 = NUM [1]
І 0x0F;
a1 = NUM [0] / 16;
a0 = NUM [0]
И 0x0F;

/ / Обчислити десяткові цифри (в b_i є висловлені тут
/ / Як TenK ... єдності, як в оригіналі)
/ / Все негативна, крім TenK
t1 = 4 * А4;
Єдності = a0 - t1 - 20;
t2 = 2 * A1;
Десятки = T1 T2 - 198;
T3 = 2 * a2;
Hund = a3 T3 - 140;
T3 = T3 * 2 / / зараз = 4 * a2
t2 = t2 * 2 / / зараз = 4 * A1
Єдності = єдності - T3 - T2;
T3 = T3 a2 a2; / / зараз = 6 * a2
Десятки = Десятки T3; / / Десятки зробили
t1 = t1 А4; / / зараз = 5 * A4
Hund Hund = t1;
T3 = 4 * a3;
Ти = T1 T3 - 144 / / Ти зробив
Єдності = єдності - T3; / / єдності зробили
TenK = t1 a4 16 / / Tenk зробили

/ / "Нормалізація" цифриробити (
Єдності = 10;
Десятки -= 1;)
а (єдності <0);

робити (
Десятки = 10;
Hund -= 1;)
а (десятки <0);

робити (
Hund = 10;
Ти -= 1;)
а (Hund <0);

робити (
Ти = 10;
TenK -= 1;)
а (ти <0);

)

Це робочий гарний, але мені потрібно більше цифр (7, буде достатньо).

Олександр.

 
А просте рішення:

Непідписані символ bcdNumber [numberofDigits];
недійсним binaryToBCD (непідписані довго binaryNumber) (
Непідписані символ індекс;
для (індекс = 0; I <numberOfDigits, індекс ) (
якщо (binaryNumber! = 0) (
bcdNumber [Index] = binaryNumber% 10;
binaryNumber = binaryNumber/10;
)
)
)

 
приветОсь рис зборів BCD код для перетворення двійковій сподіваємося допомогти повному багато інших гарних рад у бік архів
Вибачте, але вам необхідно увійти в акаунт це вкладення

 
Epegic писав:

А просте рішення:Непідписані символ bcdNumber [numberofDigits];

недійсним binaryToBCD (непідписані довго binaryNumber) (

Непідписані символ індекс;

для (індекс = 0; I <numberOfDigits, індекс ) (

якщо (binaryNumber! = 0) (

bcdNumber [Index] = binaryNumber% 10;

binaryNumber = binaryNumber/10;

)

)

)
 

Welcome to EDABoard.com

Sponsor

Back
Top