首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
如下函数,在32位系统中func((131)-3)输出的
[填空题]
如下函数,在32位系统中func((1<<31)-3)输出的值是
1
。
int func(int x)
{
return x & -x;
}
查看答案及解析
添加笔记
求解答(4)
邀请回答
收藏(90)
分享
纠错
5个回答
添加回答
9
牛客网红
1<<31:10000000……000(31个0)
1<<31-3(x):0111111……101(中间29个1)
-x:
1.符号为变为1:11111111111……101(前面30个1)
2.除符号位,其余取反:100000000……010(中间29个0)
3.+1:100000000……011(中间29个0)
x & -x:00000000……01=1
发表于 2019-02-24 20:26:54
回复(0)
4
ICANTHEARYOU
(i) 1 << 31
10000000000000000000000000000000
(ii) -3 -> +(-3)
10000000000000000000000000000011
-3的原码
11111111111111111111111111111100
-3的反码(符号位不变,各位按位取反)
11111111111111111111111111111101
-3的补码(末尾加一)
(iii) 1 << 31 + (-3)
01111111111111111111111111111101 补码相加得到变量x的补码
(iv) -x
10000000000000000000000000000011 取负:各位取反,末尾+1(-x = ~x + 1)
(v) x & -x
00000000000000000000000000000001 结果为1
编辑于 2019-06-04 14:50:51
回复(0)
6
TwistedW
在不越界时,只要是奇数,也就是二进制下最左端为1的情况下,x&-x的值始终是1
发表于 2019-06-04 14:38:37
回复(2)
0
____不名
该题求的是x能够整除的最大的2的幂级数。
1<<31-3的尾数为1101,说明该数只能整除的最大的2的幂级数为2的0次方,为1。
编辑于 2019-03-18 22:36:39
回复(0)
0
hcyan
请问第三步骤,为什么要+1?
3.+1:100000000……011(中间29个0)
发表于 2019-03-03 16:59:09
回复(2)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
算法工程师
vivo
C++
2019
来自:
vivo2019校招图...
上传者:
小小
难度:
5条回答
90收藏
3207浏览
热门推荐
相关试题
下面描述中,符合结构化程序设计风格...
搜狐
Java工程师
C++工程师
iOS工程师
安卓工程师
运维工程师
前端工程师
算法工程师
PHP工程师
2018
评论
(1)
(verbal)最近的研究显示,许...
言语理解与表达
2019
普华永道
人力资源
审计
税务服务
风险管理
管理咨询
行政管理
评论
(2)
来自
职能类模拟题14
运行 ldd hello 可以得到...
百度
C++
评论
(3)
下面代码会输出_[$##$]__。...
C++
算法工程师
vivo
2019
评论
(2)
来自
vivo2019校招图像...
有两张由双摄相机拍摄同一个场景的R...
算法工程师
vivo
2019
图像处理
评论
(0)
来自
vivo2019校招图像...
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题