powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите считать 10 байт ...
14 сообщений из 39, страница 2 из 2
Помогите считать 10 байт ...
    #33923835
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklinесли считать что в c(10байт) число, то:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
#include <iostream.h>

int main(){
	long a;

	char c[ 10 ];
	double d;

	c[ 0 ] = 0x1;
	c[ 1 ] = 0x2;
	c[ 2 ] = 0x3;
	c[ 3 ] = 0x4;
	c[ 4 ] = 0x5;
	c[ 5 ] = 0x6;
	c[ 6 ] = 0x7;
	c[ 7 ] = 0x8;
	c[ 8 ] = 0x9;
	c[ 9 ] = 0x0;

	__asm{
		fbld c
		fst d
	};

	cout << d;
	
	cin>>a;
}

а что именно вызывает ошибку? я не понял, т.к. у меня все идет.
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33923866
dont
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
int CBase::bcd(int dec)
{
   int n1n,n2n,n3n,n4n,n5n,n6n;
   n1n= dec %  10 ;
   n2n= ((dec -n1n)/ 10 ) %  10 ;
   n3n= ((dec - n2n* 10  -n1n)/ 100 ) %  10 ;
   n4n= ((dec - n3n* 100  -n2n* 10  -n1n)/ 1000 ) %  10 ;
   n5n= ((dec - n4n* 1000  -n3n* 100  -n2n* 10  -n1n)/ 10000 ) %  10 ;
   n6n= ((dec - n5n* 10000  -n4n* 1000 - n3n* 100  -n2n* 10  -n1n)/ 100000 ) %  10 ;
   return (n1n+n2n* 16 +n3n* 16 * 16 +n4n* 16 * 16 * 16 +n5n* 16 * 16 * 16 * 16 +n6n* 16 * 16 * 16 * 16 * 16 );
   //return ds::bcd(dec); 
}
Метод класса для 6-ти значныч упакованых.
Можешь развить до вида, который тебе нужно
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33923967
Zeda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
contr Zedaразбиваю каждый элемент этого массива на две тетрады
Код: plaintext
1.
2.
int buf1 = mas[i] & 0xF0;
int buf1 = mas[i] & 0x0F;

Код: plaintext
1.
2.
int buf1 = (mas[i] & 0xF0) >>  4 ;
int buf2 = mas[i] & 0x0F;


Спасибо огромное помогло.
Но одно но, как мне теперь сравнить значение тетрад, т.е. мне надо сравнивать тетрады между собой и если значение тетрады равно "0xF"->15->1111 то нужно взять только все цифры полученные до этой тетрады.
Подскажите как такое можно сделать в виде функции.
причем все это дело критично по скорости...
Подумываю, может на асме че нить .. или со вставками асмовски. Кстати, на счет вставок, доков про вставки эти найти не могу нигде, кто небудь знает какие там правила, чего нужно придерживаться??
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33924374
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZedaПодскажите как такое можно сделать в виде функции.
И в каком виде функция должна это вернуть ? В int 10^20 не войдет, в double младшие разряды потеряются...
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33924425
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
long long - 1.8*10^19 :)
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33924537
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
99999999999999999999 > 18446744073709551615
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33924597
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем, это надо у автора спрашивать, могут ли там быть значеня больше 2^64; обязательно ли нужно сохранить точное значение или достаточно округленного в виде double; и вообще что с этими числами потом делается - участвуют они в вычислениях или только сравниваются между собой или просто выводятся в виде строки.
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33924640
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarloneВобщем, это надо у автора спрашивать, могут ли там быть значеня больше 2^64; обязательно ли нужно сохранить точное значение или достаточно округленного в виде double; и вообще что с этими числами потом делается - участвуют они в вычислениях или только сравниваются между собой или просто выводятся в виде строки.

еще:
1. Возможно, там должна обязательно существовать триада 0ф, тогда число влазит в два лонга
2. Возможно, результат предствляетя в виде строки
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33924673
Zeda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akh BarloneВобщем, это надо у автора спрашивать, могут ли там быть значеня больше 2^64; обязательно ли нужно сохранить точное значение или достаточно округленного в виде double; и вообще что с этими числами потом делается - участвуют они в вычислениях или только сравниваются между собой или просто выводятся в виде строки.

еще:
1. Возможно, там должна обязательно существовать триада 0ф, тогда число влазит в два лонга
2. Возможно, результат предствляетя в виде строки

Не народ, тут все намного проще:
В эти долбанные 10 байт записаны число (номер) в BCD формате, которое с права заканчивается 0xF (т.е. конец номера). вот и все.
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33924718
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zeda....В эти долбанные 10 байт записаны число (номер) в BCD формате, которое с права заканчивается 0xF (т.е. конец номера). вот и все.

Как тут уже писалось выше - нуна организовать цикл, типа while.... где условие работы будет НЕ равенство с 0x0F. Сдвиги, как уже тут отмечалось и умножение на основание СС.

с уважением
(круглый)
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33924733
Zeda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. мне в конечном итоге нужно получить эти цифры как стринг или char без разницы.
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33924769
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zeda Akh BarloneВобщем, это надо у автора спрашивать, могут ли там быть значеня больше 2^64; обязательно ли нужно сохранить точное значение или достаточно округленного в виде double; и вообще что с этими числами потом делается - участвуют они в вычислениях или только сравниваются между собой или просто выводятся в виде строки.

еще:
1. Возможно, там должна обязательно существовать триада 0ф, тогда число влазит в два лонга
2. Возможно, результат предствляетя в виде строки

Не народ, тут все намного проще:
В эти долбанные 10 байт записаны число (номер) в BCD формате, которое с права заканчивается 0xF (т.е. конец номера). вот и все.

О как я угадал!
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33924784
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZedaНо одно но, как мне теперь сравнить значение тетрад,

Смотря как будет организоваваться цикл. Если за один проход будет анализ пары триады, то после анализа условие, будет содержать проверку 2-х триад, если по одной, то одна триада

Получать триаду вы уже умеете, сравнить: trada != 0xf
...
Рейтинг: 0 / 0
Помогите считать 10 байт ...
    #33925501
contr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZedaТ.е. мне в конечном итоге нужно получить эти цифры как стринг или char без разницы.
Прибавляйте к ранее полученным цифам 30 и будет Вам коды символов "0"-"9".
Как объединить символы в строку, думаю, подсказывать особо не надо...
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите считать 10 байт ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]