C++ long long位运算判断正负
作者:野牛程序员:2023-07-15 07:14:40 C++阅读 2651
在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