fork download
  1. #include <iostream>
  2. using namespace std;
  3. string sprawdzak( string *nazwa)
  4. {
  5. if (*nazwa=="0000")
  6. *nazwa="0";
  7. else if (*nazwa=="0001")
  8. *nazwa="1";
  9. else if (*nazwa=="0010")
  10. *nazwa="2";
  11. else if (*nazwa=="0011")
  12. *nazwa="3";
  13. else if (*nazwa=="0100")
  14. *nazwa="4";
  15. else if (*nazwa=="0101")
  16. *nazwa="5";
  17. else if (*nazwa=="0110")
  18. *nazwa="6";
  19. else if (*nazwa=="0111")
  20. *nazwa="7";
  21. else if (*nazwa=="1000")
  22. *nazwa="8";
  23. else if (*nazwa=="1001")
  24. *nazwa="9";
  25. else if (*nazwa=="1010")
  26. *nazwa="a";
  27. else if (*nazwa=="1011")
  28. *nazwa="b";
  29. else if (*nazwa=="1100")
  30. *nazwa="c";
  31. else if (*nazwa=="1101")
  32. *nazwa="d";
  33. else if (*nazwa=="1110")
  34. *nazwa="e";
  35. else if (*nazwa=="1111")
  36. *nazwa="f";
  37. return *nazwa;
  38. }
  39. int main()
  40. {
  41. float liczba, mantiska;
  42. string s,exp_s, exp_s_odw, manta,calosc;
  43. int ile_testow,krok,exp;
  44. string bitek[8];
  45. string bitka[4];
  46. cin>>ile_testow;
  47. for (int z=0;z<ile_testow;z++)
  48. {
  49. for (int x=0;x<4;x++)
  50. {
  51. bitka[x]="";
  52. }
  53. for (int x=0;x<8;x++)
  54. {
  55. bitek[x]="";
  56. }
  57. exp_s="";
  58. exp_s_odw="";
  59. manta="";
  60. calosc="";
  61. exp=127;
  62. krok=0;
  63. cin>>liczba;
  64. if (liczba<0)
  65. {
  66. liczba=-liczba;
  67. s="1";
  68. }
  69. else
  70. s="0";
  71. if (liczba==0)
  72. cout<<"0 0 0 0"<<endl;
  73. else if (liczba==0)
  74. cout<<"80 0 0 0"<<endl;
  75. else if (liczba>=1)
  76. {
  77. while(liczba>=2)
  78. {
  79. krok++;
  80. liczba=liczba/2;
  81. }
  82. exp=exp+krok;
  83. int exp_z=exp;
  84. while(exp!=0)
  85. {
  86. if ((exp)%2==1)
  87. exp_s=exp_s+"1";
  88. else if ((exp)%2==0)
  89. exp_s=exp_s+"0";
  90. exp=exp/2;
  91. }
  92. if (exp_z==127)
  93. exp_s=exp_s+"0";
  94. int d_exp = exp_s.length();
  95. for (int i=d_exp-1; i>=0; i--)
  96. {
  97. exp_s_odw=exp_s_odw+exp_s[i];
  98. }
  99. mantiska=liczba-1;
  100. for(int i=0; i<23; i++)
  101. {
  102. mantiska=mantiska*2;
  103. if (mantiska>=1)
  104. {
  105. manta=manta+"1";
  106. mantiska=mantiska-1;
  107. }
  108. else if (mantiska<1)
  109. {
  110. manta=manta+"0";
  111. }
  112. }
  113. calosc=s+exp_s_odw+manta;
  114. int k=0;
  115. for (int i=0; i<8; i++)
  116. {
  117. for (int j=0; j<4; j++)
  118. {
  119. bitek[i]=bitek[i]+calosc[k];
  120. k++;
  121. }
  122. sprawdzak(&bitek[i]);
  123. }
  124. int c=0;
  125. for (int i=0; i<4; i++)
  126. {
  127. bitka[i]=bitek[c]+bitek[c+1];
  128. if (bitka[i]=="00")
  129. bitka[i]="0";
  130. cout<<bitka[i]<<" ";
  131. c=c+2;
  132. }
  133. cout<<endl;
  134. }
  135. else if (liczba<1)
  136. {
  137. while(liczba<1)
  138. {
  139. krok--;
  140. liczba=liczba*2;
  141. }
  142. exp=exp+krok;
  143. while(exp!=0)
  144. {
  145. if ((exp)%2==1)
  146. exp_s=exp_s+"1";
  147. else if ((exp)%2==0)
  148. exp_s=exp_s+"0";
  149. exp=exp/2;
  150. }
  151. int d_exp = exp_s.length();
  152. while(d_exp<8)
  153. {
  154. exp_s=exp_s+"0";
  155. d_exp=exp_s.length();
  156. }
  157. for (int i=d_exp-1; i>=0; i--)
  158. {
  159. exp_s_odw=exp_s_odw+exp_s[i];
  160. }
  161. mantiska=liczba-1;
  162. for(int i=0; i<23; i++)
  163. {
  164. mantiska=mantiska*2;
  165. if (mantiska>=1)
  166. {
  167. manta=manta+"1";
  168. mantiska=mantiska-1;
  169. }
  170. else if (mantiska<1)
  171. {
  172. manta=manta+"0";
  173. }
  174. }
  175. calosc=s+exp_s_odw+manta;
  176. int k=0;
  177. for (int i=0; i<8; i++)
  178. {
  179. for (int j=0; j<4; j++)
  180. {
  181. bitek[i]=bitek[i]+calosc[k];
  182. k++;
  183. }
  184. sprawdzak(&bitek[i]);
  185. }
  186. int c=0;
  187. for (int i=0; i<4; i++)
  188. {
  189. bitka[i]=bitek[c]+bitek[c+1];
  190. if (bitka[i]=="00")
  191. bitka[i]="0";
  192. cout<<bitka[i]<<" ";
  193. c=c+2;
  194. }
  195. cout<<endl;
  196. }
  197. }
  198. return 0;
  199. }
  200.  
Success #stdin #stdout 0s 15248KB
stdin
6
1
-1
0.000062
6464.991
0
-0.15
stdout
3f 80 0 0 
bf 80 0 0 
38 82 05 ff 
45 ca 07 ee 
0 0 0 0
be 19 99 9a