#include \"d_to_b.h\"
/******************************************************************
十进制转化成二进制,且负数可选择用补码还是源码表示~~~~
******************************************************************/
int main()
{
int i;
int j, k;
/* ----------------------读入数据--------------------- */
FILE *fp_in_i, *fp_in_q;
fp_in_i = fopen(\"tx_interp_out_i.txt\
fp_in_q = fopen(\"tx_interp_out_q.txt\
for(i = 0; i < data_length; i++)
{
fscanf(fp_in_i, \"%lf\
fscanf(fp_in_q, \"%lf\
}
fclose (fp_in_i);
fclose (fp_in_q);
/* -------------------------------------------------- */
FILE *fp_shift_i, *fp_shift_q;
fp_shift_i = fopen(\"tx_shift_out_i.txt\
fp_shift_q = fopen(\"tx_shift_out_q.txt\
FILE *fp_out_i, *fp_out_q;
fp_out_i = fopen(\"change_out_i.txt\
fp_out_q = fopen(\"change_out_q.txt\
/* -------------需要移位的数据先进行移位,即转化成整数,不需要转的,则设置shift_length=0------------ */
for(i = 0; i < data_length; i++)
{
data_reg_i[i] = data_in_i[i] * pow(2, shift_length);
data_reg_q[i] = data_in_q[i] * pow(2, shift_length);
fprintf(fp_shift_i, \"%d\\n\
fprintf(fp_shift_q, \"%d\\n\
}
/* ----------------------------------------------- */
/* ---------------------------十进制化为二进制,负数用补码-------------------------------- */
#if com_code
for(i = 0; i < data_length; i++)
{
/* --------------I路 正数转化------------- */
if(data_reg_i[i] >= 0)
{
binary_i[data_bit - 1] = 0; //符号位为0
fprintf(fp_out_i, \"%d\
for(j = 0, k = fabs(data_reg_i[i]); j < data_bit - 1; j++, k = k/2)
{
if(k % 2 == 0)
binary_i[j] = 0;
else
binary_i[j] = 1;
}
for(j = data_bit - 2; j >= 0; j--)
{
fprintf(fp_out_i, \"%d\j]);
}
fprintf(fp_out_i, \"\\n\");
}
/* --------------I路 负数转化------------- */
else
{
binary_i[data_bit - 1] = 1; //符号位为1
fprintf(fp_out_i, \"%d\
/* ---------------------------以下要按位取反---------------------------- */
if( -1 * data_reg_i[i] % 2 == 0 )
{
binary_i[0] = 0;
binary_i_com[0] = 0;
}
else
{
binary_i[0] = 1;
binary_i_com[0] = 1;
}
for(j = 1, k = fabs(data_reg_i[i]) / 2; j < data_bit - 1; j++, k = k/2)
{
if(k % 2 == 0 && binary_i[j - 1] == 0 && binary_i_com[j - 1] == 0)
{
binary_i[j] = 0;
binary_i_com[j] = 0;
}
else if(k % 2 == 0 && binary_i[j - 1] == 0 && binary_i_com[j - 1] == 1)
{
binary_i[j] = 0;
binary_i_com[j] = 1;
}
else if(k % 2 == 0 && binary_i[j - 1] == 1 && binary_i_com[j - 1] == 0)
{
binary_i[j] = 1;
binary_i_com[j] = 1;
}
else if(k % 2 == 0 && binary_i[j - 1] == 1 && binary_i_com[j - 1] == 1)
{
binary_i[j] = 1;
binary_i_com[j] = 1;
}
else if(k % 2 == 1 && binary_i[j - 1] == 0 && binary_i_com[j - 1] == 0)
{
binary_i[j] = 1;
binary_i_com[j] = 1;
}
else if(k % 2 == 1 && binary_i[j - 1] == 0 && binary_i_com[j - 1] == 1)
{
binary_i[j] = 1;
binary_i_com[j] = 0;
}
else if(k % 2 == 1 && binary_i[j - 1] == 1 && binary_i_com[j - 1] == 0)
{
binary_i[j] = 1;
binary_i_com[j] = 0;
}
else
{
binary_i[j] = 1;
binary_i_com[j] = 0;
}
}
/* ------------------------------------------------------------------- */
for(j = data_bit - 2; j >= 0; j--)
{
fprintf(fp_out_i, \"%d\j]);
}
fprintf(fp_out_i, \"\\n\");
}
/* ------------------------------------- */
/* --------------Q路 正数转化------------- */
if(data_reg_q[i] >= 0)
{
binary_q[data_bit - 1] = 0; //符号位为0
fprintf(fp_out_q, \"%d\
for(j = 0, k = fabs(data_reg_q[i]); j < data_bit - 1; j++, k = k/2)
{
if(k % 2 == 0)
binary_q[j] = 0;
else
binary_q[j] = 1;
}
for(j = data_bit - 2; j >= 0; j--)
{
fprintf(fp_out_q, \"%d\j]);
}
fprintf(fp_out_q, \"\\n\");
}
/* --------------Q路 负数转化------------- */
else
{
binary_q[data_bit - 1] = 1; //符号位为1
fprintf(fp_out_q, \"%d\
/* ---------------------------以下要按位取反---------------------------- */
if( -1 * data_reg_q[i] % 2 == 0 )
{
binary_q[0] = 0;
binary_q_com[0] = 0;
}
else
{
binary_q[0] = 1;
binary_q_com[0] = 1;
}
for(j = 1, k = fabs(data_reg_q[i]) / 2; j < data_bit - 1; j++, k = k/2)
{
if(k % 2 == 0 && binary_q[j - 1] == 0 && binary_q_com[j - 1] == 0)
{
binary_q[j] = 0;
binary_q_com[j] = 0;
}
else if(k % 2 == 0 && binary_q[j - 1] == 0 && binary_q_com[j - 1] == 1)
{
binary_q[j] = 0;
binary_q_com[j] = 1;
}
else if(k % 2 == 0 && binary_q[j - 1] == 1 && binary_q_com[j - 1] == 0)
{
binary_q[j] = 1;
binary_q_com[j] = 1;
}
else if(k % 2 == 0 && binary_q[j - 1] == 1 && binary_q_com[j - 1] == 1)
{
binary_q[j] = 1;
binary_q_com[j] = 1;
}
else if(k % 2 == 1 && binary_q[j - 1] == 0 && binary_q_com[j - 1] == 0)
{
binary_q[j] = 1;
binary_q_com[j] = 1;
}
else if(k % 2 == 1 && binary_q[j - 1] == 0 && binary_q_com[j - 1] == 1)
{
binary_q[j] = 1;
binary_q_com[j] = 0;
}
else if(k % 2 == 1 && binary_q[j - 1] == 1 && binary_q_com[j - 1] == 0)
{
binary_q[j] = 1;
binary_q_com[j] = 0;
}
else
{
binary_q[j] = 1;
binary_q_com[j] = 0;
}
}
/* ------------------------------------------------------------------- */
for(j = data_bit - 2; j >= 0; j--)
{
fprintf(fp_out_q, \"%d\j]);
}
fprintf(fp_out_q, \"\\n\");
}
/* ------------------------------------- */
}
/* ----------------------------------------------------------------------------------- */
#endif
#if code
/* ------------------------------十进制转二进制,负数不用补码--------------------------- */
for(i = 0; i < data_length; i++)
{
/* --------------I路 转化------------- */
if(data_reg_i[i] >= 0)
{
binary_i[data_bit - 1] = 0; //符号位为0
fprintf(fp_out_i, \"%d\
}
else
{
binary_i[data_bit - 1] = 1; //符号位为1
fprintf(fp_out_i, \"%d\
}
for(j = 0, k = fabs(data_reg_i[i]); j < data_bit - 1; j++, k = k/2)
{
if(k % 2 == 0)
binary_i[j] = 0;
else
binary_i[j] = 1;
}
for(j = data_bit - 2; j >= 0; j--)
{
fprintf(fp_out_i, \"%d\j]);
}
fprintf(fp_out_i, \"\\n\");
/* --------------Q路 转化------------- */
if(data_reg_q[i] >= 0)
{
binary_q[data_bit - 1] = 0; //符号位为0
fprintf(fp_out_q, \"%d\
}
else
{
binary_q[data_bit - 1] = 1; //符号位为1
fprintf(fp_out_q, \"%d\
}
for(j = 0, k = fabs(data_reg_q[i]); j < data_bit - 1; j++, k = k/2)
{
if(k % 2 == 0)
binary_q[j] = 0;
else
binary_q[j] = 1;
}
for(j = data_bit - 2; j >= 0; j--)
{
fprintf(fp_out_q, \"%d\j]);
}
fprintf(fp_out_q, \"\\n\");
}
/* ----------------------------------------------------------------------------------- */
#endif
printf(\"change has passed!\\n\");
fclose(fp_shift_i);
fclose(fp_shift_q);
fclose(fp_out_i);
fclose(fp_out_q);
return 0;
}