#include<iostream> #include<bitset> #include<cstdio> #include<vector> #include<cmath> #define db(a) cout << #a << " = " << a << endl; using namespace std; string complemento2(string cad){ for(int i = 0; i < 32; i++) cad[i] = cad[i] == '1' ? '0' : '1'; bool carry = true; for(int i = 31; i >= 0 && carry; i--){ if(cad[i] == '0') { if(carry) cad[i] = '1', carry = false; } else if(carry) cad[i] = '0'; } return cad; } int to_int(string cad){ int factor = 1; if(cad[0] == '1') cad = complemento2(cad), factor *= -1; int num = 0; for(int i = 0; i < 32; i++){ if(cad[i] == '1') num += pow(2., 31 - i); } return factor * num; } int main(){ int n; while(scanf("%d", &n) != EOF){ bitset<32> bit_set = n; string num_b = bit_set.to_string(); string concat = "", res = ""; for(int i = 1; i <= 32; i++) if (i % 8 != 0) concat += num_b[i - 1]; else concat += num_b[i - 1], res = concat + res, concat = ""; int rpta = to_int(res); printf("%d converts to %d\n", n, rpta); } return 0; }
lunes, 24 de octubre de 2011
One Little, Two Little, Three Little Endians , uva
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario