萌新初学位运算,求问
查看原帖
萌新初学位运算,求问
316258
xC41楼主2024/7/25 17:09

为什么

#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
long long a;
int b[64];
long long ans;
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin >> a;
	int cnt = 0;
	for(; ; a >>= 1){
        cnt++;
		if(a & 1) b[cnt] = 1;
		else b[cnt] = 0;
        if(cnt == 32) break;
	}
	int x = 0;
	for(int i = 17; i <= 32; i++, x++){
		ans += b[i] * pow(2, x);
	}
	for(int i = 1; i <= 16; i++, x++){
		ans += b[i] * pow(2, x);
	}
	cout << ans << endl;
	return 0;
}

可以 而

#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
long long a;
int b[64];
long long ans;
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin >> a;
	int cnt = 1;
	for(; cnt == 32; a >>= 1, cnt++){
		if(a & 1) b[cnt] = 1;
		else b[cnt] = 0;
	}
	int x = 0;
	for(int i = 17; i <= 32; i++, x++){
		ans += b[i] * pow(2, x);
	}
	for(int i = 1; i <= 16; i++, x++){
		ans += b[i] * pow(2, x);
	}
	cout << ans << endl;
	return 0;
}

不行?

2024/7/25 17:09
加载中...