nota float
This commit is contained in:
parent
f330082b8b
commit
e97842e60e
|
@ -94,7 +94,8 @@ void nota_write_int(long long n, char *nota)
|
||||||
|
|
||||||
nota[0] = NOTA_INT | sign;
|
nota[0] = NOTA_INT | sign;
|
||||||
|
|
||||||
nota_continue_num(n, nota, 3);
|
nota = nota_continue_num(n, nota, 3);
|
||||||
|
*nota = 0;
|
||||||
print_nota_hex(nota);
|
print_nota_hex(nota);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,6 +158,7 @@ void nota_write_float(double n, char *nota)
|
||||||
nota_continue_num(sig, c, 7);
|
nota_continue_num(sig, c, 7);
|
||||||
|
|
||||||
printf("float number %g\n", n* (sign ? -1 : 1));
|
printf("float number %g\n", n* (sign ? -1 : 1));
|
||||||
|
printf("aka %d x 10^%d\n", sig, e);
|
||||||
print_nota_hex(nota);
|
print_nota_hex(nota);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,18 +166,21 @@ double nota_read_float(char *nota)
|
||||||
{
|
{
|
||||||
printf("reading ...\n");
|
printf("reading ...\n");
|
||||||
print_nota_hex(nota);
|
print_nota_hex(nota);
|
||||||
long long sig;
|
long long sig = 0;
|
||||||
long long e;
|
long long e = 0;
|
||||||
|
|
||||||
char *c = nota;
|
char *c = nota;
|
||||||
e = *c & NOTA_INT_DATA; /* first three bits */
|
e = (*c) & NOTA_INT_DATA; /* first three bits */
|
||||||
while (CONTINUE(*(c++)))
|
while (CONTINUE(*c)) {
|
||||||
e = (e<<7) | (*c) & NOTA_DATA;
|
e = (e<<7) | (*c) & NOTA_DATA;
|
||||||
|
|
||||||
c++;
|
c++;
|
||||||
|
}
|
||||||
|
|
||||||
sig = (*c) & NOTA_DATA;
|
sig = (*c) & NOTA_DATA;
|
||||||
while (CONTINUE(*(c++)))
|
while (CONTINUE(*c)) {
|
||||||
sig = (sig<<7) | *c & NOTA_DATA;
|
sig = (sig<<7) | *c & NOTA_DATA;
|
||||||
|
c++;
|
||||||
|
}
|
||||||
|
|
||||||
if (NOTA_SIG_SIGN(*nota)) sig *= -1;
|
if (NOTA_SIG_SIGN(*nota)) sig *= -1;
|
||||||
if (NOTA_EXP_SIGN(*nota)) e *= -1;
|
if (NOTA_EXP_SIGN(*nota)) e *= -1;
|
||||||
|
|
|
@ -13,6 +13,7 @@ int nota_type(char *nota);
|
||||||
void nota_write_int(long long n, char *nota);
|
void nota_write_int(long long n, char *nota);
|
||||||
long long nota_read_int(char *nota);
|
long long nota_read_int(char *nota);
|
||||||
char *nota_read_num(char *nota, long long *n);
|
char *nota_read_num(char *nota, long long *n);
|
||||||
|
void nota_write_float(double n, char *nota);
|
||||||
double nota_read_float(char *nota);
|
double nota_read_float(char *nota);
|
||||||
void nota_write_bool(int b, char *nota);
|
void nota_write_bool(int b, char *nota);
|
||||||
int nota_read_bool(char *nota);
|
int nota_read_bool(char *nota);
|
||||||
|
|
Loading…
Reference in a new issue