首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
如下函数,在32位系统中func((131)-3)输出的
[填空题]
如下函数,在32位系统中func((1<<31)-3)输出的值是
1
。
int func(int x)
{
return x & -x;
}
查看正确选项
添加笔记
求解答(4)
邀请回答
收藏(91)
分享
纠错
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条回答
91收藏
3454浏览
热门推荐
相关试题
运行 ldd hello 可以得到...
百度
C++
评论
(3)
下面描述中,符合结构化程序设计风格...
搜狐
Java工程师
C++工程师
iOS工程师
安卓工程师
运维工程师
前端工程师
算法工程师
PHP工程师
2018
评论
(1)
(verbal)最近的研究显示,许...
言语理解与表达
2019
普华永道
人力资源
审计
税务服务
风险管理
管理咨询
行政管理
评论
(3)
来自
职能类模拟题14
在合成高动态域图像(HDR)时,需...
算法工程师
vivo
2019
图像处理
评论
(1)
来自
vivo2019校招图像...
使用char* p = new c...
C++
算法工程师
vivo
2019
评论
(12)
来自
vivo2019校招图像...
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题