关于第二种情况的位运算判断
查看原帖
关于第二种情况的位运算判断
767779
BD_AZZR_CN楼主2024/6/21 00:29

众所周知Unsigned Short的负数是以1开头的(比如short的-1,即0XFFFF,即1111 1111 1111 1111)

利用这个特性,可以:判断n-5是否是负数(因为大于4的整数,即大于等于五,小于五的就不大于四),类比得出12-n是否是负数

再将(n-5)|(12-n),若都满足应当为(0...)|(0...)

那么结果为0...,否则为1...

在运用右移取第一位,即上述0的位置的数字

即0XXX XXXX XXXX XXXX 取出0

可以使用 >> 15,将0右移动15位,从16到第1位(你可以这么理解)

最后由于满足为0,不满足为1,需要取反,即^1

贴代码:

... = ((((n-5)|(12-n))&0x8000)>>15) ^ 1
2024/6/21 00:29
加载中...