C++ long long位运算判断正负
作者:野牛程序员:2023-07-15 07:14:40 C++阅读 3196
在C++中,可以使用位运算来判断一个long long类型的整数的正负。位运算的基本思想是利用数的二进制表示形式中的符号位来进行判断。
以下是使用位运算判断long long整数的正负的方法:
#include <iostream>
int main() {
long long num = -123;
if (num & (1LL << 63)) {
std::cout << "Negative" << std::endl;
} else {
std::cout << "Positive" << std::endl;
}
return 0;
}在上述代码中,我们使用了位与运算符&和左移运算符<<来判断num的符号位是否为1。在C++中,1LL表示一个long long类型的值1。(1LL << 63)将1左移63位,生成一个只有符号位为1的数。
然后,我们使用位与运算符&将num的符号位与(1LL << 63)进行与运算。如果结果不为0,则说明num是一个负数;否则,num是一个正数。
注意,1LL << 63这个表达式是针对long long类型的符号位进行的位运算。对于其他整数类型,需要根据其位数进行相应的调整。
在C++中,1LL << 63的目的是将1左移63位,生成一个只有最高位(符号位)为1的long long类型的数。
在C++中,long long类型通常占用64位内存,其中最高位(最左边的位)被用作符号位,表示整数的正负。当符号位为1时,表示负数;当符号位为0时,表示非负数(包括0和正数)。
因此,通过将1左移63位,可以生成一个只有最高位为1,其余位均为0的long long数。这样,通过与待判断的long long数进行位与运算,就可以提取出符号位的值,从而判断其正负性。
需要注意的是,1LL << 63是在64位平台上使用的,如果在其他平台上使用,可能需要根据实际的long long位数进行相应调整。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

