Thursday, June 11, 2015

UVa 594 - One Little, Two Little, Three Little Endians

// UVa 594 - One Little, Two Little, Three Little Endians
#include <iostream>
using namespace std;

#define integer signed long long int

int main() {
	integer n;
	while (cin >> n) {
		integer b0 = n & 255;
		integer b1 = (n >> 8) & 255;
		integer b2 = (n >> 16) & 255;
		integer b3 = (n >> 24) & 255;
		integer m = (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;
		int left = (b0 >> 7) << 30;
		for (int i = 31; i <= sizeof(integer) * 8 - 1; i++) {
			left = left << 1;
			m = m | left;
		}

		cout << n << " converts to " << m << endl;
	}
	return 0;
}

No comments:

Post a Comment