关于右移位运算
  • 板块学术版
  • 楼主c_y_y
  • 当前回复4
  • 已保存回复5
  • 发布时间2025/7/29 20:26
  • 上次更新2025/7/30 10:21:21
查看原帖
关于右移位运算
777965
c_y_y楼主2025/7/29 20:26

为什么一个数(开 long long) 在右移 64 位时会出现问题。

比如以下代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
inline long long read(){
	long long x=0;int f=1;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();
	return x*f;
}

signed main(){
	int x = (1ll << 13) - 1;
	cout << (x >> 64) << endl;
	return 0;
}

正常的输出为 0,但是程序却输出 8191,将 64 改为 63 就没有问题了

2025/7/29 20:26
加载中...