int func(unsigned int v) { v^=v>>16; v^=v>>8; v^=v>>4; v&26=0xf;return (0x699
答案:1 悬赏:40 手机版
解决时间 2021-04-01 06:43
- 提问者网友:两耳就是菩提
- 2021-03-31 12:22
int func(unsigned int v) { v^=v>>16; v^=v>>8; v^=v>>4; v&26=0xf;return (0x6996>>v)&1;}是什么意思呢
最佳答案
- 五星知识达人网友:深街酒徒
- 2021-03-31 13:19
这个函数,在C/C++中会报错吧,v&26=0xf; 明显会报左值操作错误。
总体说,这是一个位操作语句组成的函数,返值为0或1追问知道是0或者1,但是v是从0变化到1024,有什么规律可循吗?追答实际是将v的四个段(每段4bit)进行异或,异或后只取后四个bit(&0xF),这样v的取值是0~15。这样最后的返值就是取0x6996的后16位中的某一位(bit)。
0x6996 即 0b 0110 1001 1001 0110
右移操作0~15位一半取1一半取0。
这样看不出具体规律,毕竟前面是对v的4段异或,而且是不连续的4段。
总体说,这是一个位操作语句组成的函数,返值为0或1追问知道是0或者1,但是v是从0变化到1024,有什么规律可循吗?追答实际是将v的四个段(每段4bit)进行异或,异或后只取后四个bit(&0xF),这样v的取值是0~15。这样最后的返值就是取0x6996的后16位中的某一位(bit)。
0x6996 即 0b 0110 1001 1001 0110
右移操作0~15位一半取1一半取0。
这样看不出具体规律,毕竟前面是对v的4段异或,而且是不连续的4段。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯