fork download
  1. #include <iostream>
  2. using namespace std;
  3. void 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. }
  38. int main()
  39. {
  40. float liczba, mantiska;
  41. string s,exp_s, exp_s_odw, manta,calosc;
  42. int ile_testow,krok,exp;
  43. string bitek[8];
  44. string bitka[4];
  45. cin>>ile_testow;
  46. for (int z=0;z<ile_testow;z++)
  47. {
  48. for (int x=0;x<4;x++)
  49. {
  50. bitka[x]="";
  51. }
  52. for (int x=0;x<8;x++)
  53. {
  54. bitek[x]="";
  55. }
  56. exp_s="";
  57. exp_s_odw="";
  58. manta="";
  59. calosc="";
  60. exp=127;
  61. krok=0;
  62. cin>>liczba;
  63. if (liczba<0)
  64. {
  65. liczba=-liczba;
  66. s="1";
  67. }
  68. else
  69. s="0";
  70. if (liczba==0)
  71. cout<<"0 0 0 0"<<endl;
  72. else if (liczba==0)
  73. cout<<"80 0 0 0"<<endl;
  74. else if (liczba>=1)
  75. {
  76. while(liczba>=2)
  77. {
  78. krok++;
  79. liczba=liczba/2;
  80. }
  81. exp=exp+krok;
  82. int exp_z=exp;
  83. while(exp!=0)
  84. {
  85. if ((exp)%2==1)
  86. exp_s=exp_s+"1";
  87. else if ((exp)%2==0)
  88. exp_s=exp_s+"0";
  89. exp=exp/2;
  90. }
  91. if (exp_z==127)
  92. exp_s=exp_s+"0";
  93. int d_exp = exp_s.length();
  94. for (int i=d_exp-1; i>=0; i--)
  95. {
  96. exp_s_odw=exp_s_odw+exp_s[i];
  97. }
  98. mantiska=liczba-1;
  99. for(int i=0; i<23; i++)
  100. {
  101. mantiska=mantiska*2;
  102. if (mantiska>=1)
  103. {
  104. manta=manta+"1";
  105. mantiska=mantiska-1;
  106. }
  107. else if (mantiska<1)
  108. {
  109. manta=manta+"0";
  110. }
  111. }
  112. calosc=s+exp_s_odw+manta;
  113. int k=0;
  114. for (int i=0; i<8; i++)
  115. {
  116. for (int j=0; j<4; j++)
  117. {
  118. bitek[i]=bitek[i]+calosc[k];
  119. k++;
  120. }
  121. sprawdzak(bitek[i]);
  122. /*if (bitek[i]=="0000")
  123.   bitek[i]="0";
  124.   if (bitek[i]=="0001")
  125.   bitek[i]="1";
  126.   if (bitek[i]=="0010")
  127.   bitek[i]="2";
  128.   if (bitek[i]=="0011")
  129.   bitek[i]="3";
  130.   if (bitek[i]=="0100")
  131.   bitek[i]="4";
  132.   if (bitek[i]=="0101")
  133.   bitek[i]="5";
  134.   if (bitek[i]=="0110")
  135.   bitek[i]="6";
  136.   if (bitek[i]=="0111")
  137.   bitek[i]="7";
  138.   if (bitek[i]=="1000")
  139.   bitek[i]="8";
  140.   if (bitek[i]=="1001")
  141.   bitek[i]="9";
  142.   if (bitek[i]=="1010")
  143.   bitek[i]="a";
  144.   if (bitek[i]=="1011")
  145.   bitek[i]="b";
  146.   if (bitek[i]=="1100")
  147.   bitek[i]="c";
  148.   if (bitek[i]=="1101")
  149.   bitek[i]="d";
  150.   if (bitek[i]=="1110")
  151.   bitek[i]="e";
  152.   if (bitek[i]=="1111")
  153.   bitek[i]="f";*/
  154. }
  155. int c=0;
  156. for (int i=0; i<4; i++)
  157. {
  158. bitka[i]=bitek[c]+bitek[c+1];
  159. if (bitka[i]=="00")
  160. bitka[i]="0";
  161. cout<<bitka[i]<<" ";
  162. c=c+2;
  163. }
  164. cout<<endl;
  165. }
  166. else if (liczba<1)
  167. {
  168. while(liczba<1)
  169. {
  170. krok--;
  171. liczba=liczba*2;
  172. }
  173. exp=exp+krok;
  174. while(exp!=0)
  175. {
  176. if ((exp)%2==1)
  177. exp_s=exp_s+"1";
  178. else if ((exp)%2==0)
  179. exp_s=exp_s+"0";
  180. exp=exp/2;
  181. }
  182. int d_exp = exp_s.length();
  183. while(d_exp<8)
  184. {
  185. exp_s=exp_s+"0";
  186. d_exp=exp_s.length();
  187. }
  188. for (int i=d_exp-1; i>=0; i--)
  189. {
  190. exp_s_odw=exp_s_odw+exp_s[i];
  191. }
  192. mantiska=liczba-1;
  193. for(int i=0; i<23; i++)
  194. {
  195. mantiska=mantiska*2;
  196. if (mantiska>=1)
  197. {
  198. manta=manta+"1";
  199. mantiska=mantiska-1;
  200. }
  201. else if (mantiska<1)
  202. {
  203. manta=manta+"0";
  204. }
  205. }
  206. calosc=s+exp_s_odw+manta;
  207. int k=0;
  208. for (int i=0; i<8; i++)
  209. {
  210. for (int j=0; j<4; j++)
  211. {
  212. bitek[i]=bitek[i]+calosc[k];
  213. k++;
  214. }
  215. if (bitek[i]=="0000")
  216. bitek[i]="0";
  217. if (bitek[i]=="0001")
  218. bitek[i]="1";
  219. if (bitek[i]=="0010")
  220. bitek[i]="2";
  221. if (bitek[i]=="0011")
  222. bitek[i]="3";
  223. if (bitek[i]=="0100")
  224. bitek[i]="4";
  225. if (bitek[i]=="0101")
  226. bitek[i]="5";
  227. if (bitek[i]=="0110")
  228. bitek[i]="6";
  229. if (bitek[i]=="0111")
  230. bitek[i]="7";
  231. if (bitek[i]=="1000")
  232. bitek[i]="8";
  233. if (bitek[i]=="1001")
  234. bitek[i]="9";
  235. if (bitek[i]=="1010")
  236. bitek[i]="a";
  237. if (bitek[i]=="1011")
  238. bitek[i]="b";
  239. if (bitek[i]=="1100")
  240. bitek[i]="c";
  241. if (bitek[i]=="1101")
  242. bitek[i]="d";
  243. if (bitek[i]=="1110")
  244. bitek[i]="e";
  245. if (bitek[i]=="1111")
  246. bitek[i]="f";
  247. }
  248. int c=0;
  249. for (int i=0; i<4; i++)
  250. {
  251. bitka[i]=bitek[c]+bitek[c+1];
  252. if (bitka[i]=="00")
  253. bitka[i]="0";
  254. cout<<bitka[i]<<" ";
  255. c=c+2;
  256. }
  257. cout<<endl;
  258. }
  259. }
  260. return 0;
  261. }
  262.  
Success #stdin #stdout 0s 15248KB
stdin
6
-0.611
3
-1
0.0000009
0
600.505
stdout
bf 1c 6a 7f 
01000000 01000000 00000000 00000000 
10111111 10000000 00000000 00000000 
35 71 97 87 
0 0 0 0
01000100 00010110 00100000 01010010