首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
int fun(int a){ a^=(15)-1; r
[单选题]
int fun(int a){ a^=(1<<5)-1; return a; }
fun(21)运行结果是()
10
5
3
8
查看答案及解析
添加笔记
求解答(0)
邀请回答
收藏(634)
分享
20个回答
添加回答
29
LiminWang
发表于 2016-03-11 19:24:26
回复(0)
16
codermanFans
这一题我看叉了,
具体思路:
a = a^((1<<5) - 1); //这里添加一个括号,为了说明减号比异或的优先级高
1<<5 = 00 0001 = 10 0000
1<<5 - 1 = 10 0000 - 1 = 1 1111
21 = 1 0101
1 0101 ^ 1 1111 = 0 1010
发表于 2015-09-19 10:50:34
回复(4)
8
ms12
在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
(1<<5): 左移5位相当于乘以2的5次方,即32,则,1左移5位得32
a = a^((1<<5) - 1); //这里添加一个括号,为了说明减号比异或的优先级高
原式相当于a = a^(31);此函数就是求取一数与31异或后的值
当a=21时,化为二进制:10101
32的二进制:11111
异或后得:01010,即十进制的10
发表于 2017-03-18 15:38:09
回复(4)
3
ʟᴇᴠɪɴ
1 : 0000 0001 1<<5: 0010 0000 (1<<5)-1: 0001 1111 a : 0001 0101 result : 0000 1010
发表于 2016-11-23 00:48:04
回复(0)
2
JoeWw
当a=21时,化为二进制:10101
31的二进制:11111
异或后得:01010,即十进制的10
发表于 2019-01-31 21:05:19
回复(0)
2
ONMYOWNWAY
异或运算符^,左移运算符《
发表于 2017-05-14 00:44:41
回复(0)
2
菜*鱼
记住抑或^的执行结果是相同则为0,不同则为1,即可做出本题
发表于 2017-05-09 00:02:15
回复(0)
1
精致的鸽子不服输
注意运算符优先级,加减优先于位运算符。
编辑于 2018-07-27 16:49:01
回复(0)
1
聊寂园
我觉得是^=运算符优先级最低,所以先算右边的(1<<5)-1
发表于 2018-04-10 09:46:50
回复(0)
1
ryanxw
,考查运算符优先级问题,减号(-)比^的优先级要高
发表于 2018-04-07 19:24:46
回复(0)
1
216JK445
愚蠢如我 最后一步异或操作我居然是按照按位或操作的
发表于 2018-03-30 16:16:45
回复(0)
1
梦境迷离
看成^是幂
发表于 2018-02-21 13:36:16
回复(0)
1
松针
<<为移位符,表示前面的数的二进制向左移动五位,得到100000,减1,得到1111,^符号为异或,化为二进制比较,不同的为1。得到结果
发表于 2017-08-25 20:27:57
回复(0)
1
西安理工~蒙园园
1<<5-1 0000 0001左移5位 0010 0000 - 0000 0001 = 0001 1110 ^相同为0否则为1 21 0001 0101 ^ 0001 1110 = 0000 1010 10
编辑于 2016-09-27 10:56:11
回复(0)
1
不忘_初心
a^=(1<<5)-1;相当于a=a^((1<<5)-1);(1<<5)-1=31;31转换为二进制是11111,21二进制是10101,异或结果为01010,转化为十进制就是10
发表于 2016-08-27 16:19:12
回复(0)
1
book生活
10101 (21的二进制)
11111 (1<<5)-1 就是31的二进制
^ -----------
01010 (所以答案就是10)
发表于 2015-09-19 13:33:44
回复(0)
0
一笑而过2222
00010101 (21) ^ 00011111 (31) -------- 00001010 (10)
发表于 2025-06-18 17:27:55
回复(0)
0
小小小树
异或,不同为1
发表于 2019-09-10 13:46:43
回复(0)
0
蒲公英1996
移动五位,1在第六位上
发表于 2019-05-31 20:05:46
回复(0)
0
Aggressive201903171712971
移位运算符>算数运算符>^
发表于 2019-03-17 17:26:54
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
C++
来自:
2016研发工程师笔试题
难度:
20条回答
634收藏
6894浏览
热门推荐
相关试题
运行 ldd hello 可以得到...
百度
C++
评论
(3)
下面算法的功能是
C语言
评论
(20)
来自
2016研发工程师笔试题
针对以下代码,哪些说法是正确的?
Java
评论
(199)
来自
2016研发工程师笔试题
下面的排序方法中,关键字比较次数与...
排序
评论
(20)
来自
2016研发工程师笔试题
下列关于C/C++的宏定义,不正确...
C++
评论
(21)
来自
2016研发工程师笔试题
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题