永发信息网

用位操作写一个判断正负数的C语言代码

答案:3  悬赏:40  手机版
解决时间 2021-03-29 19:40
  • 提问者网友:酱爆肉
  • 2021-03-29 01:28
用位操作写一个判断正负数的C语言代码
最佳答案
  • 五星知识达人网友:酒安江南
  • 2021-03-29 02:32

int sign(int a)
{
return (a>>(sizeof(a)*8-1))&1;
}
全部回答
  • 1楼网友:酒醒三更
  • 2021-03-29 03:57
int isPositive(int num) {
   return  ! (num & 0x80000000) ;
}
上面这个函数可以判断一个整数是正还是负。这个整数可以是8位、16位、32位。


调用上面的函数,如果是正数,返回true;如果是负数,返回false。


此函数未考虑传入的参数为0的情况。
  • 2楼网友:英雄的欲望
  • 2021-03-29 03:35
你好,首先要测试一下你编译器所定义的整型是多少字节,用sizeof(int)测试一下,一般是4字节,假如是4字节说明是32位,这样无符号和有符号整数区别在于第32位是1还是0,所以可以用一个数0x80000000=1000 0000 0000 0000 0000 0000 0000 0000(32),与整数做“与&”运算,假如最高位结果是1(即0x80000000),说明原来整数是负数,假如位0则是正数。
所以可以用如下代码实现
int yu(int num)
{
return (num & 0x80000000) ;
}
之后在调用函数测试return值就可以了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯