《数据科学面试40+真题讲解》,K神本年度最后一次开课


一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
码农求职神器Triplebyte:
不用海投,内推你去多家公司面试
Airbnb 数据科学职位
in analytics and inference
天天打游戏、照样领工资,
你要不要来?
把贵司招聘信息放这里
查看: 1004|回复: 12
收起左侧

微软OTS 这题求解 写java的人表示不懂???

[复制链接] |试试Instant~ |关注本帖
m1n2b3v4 发表于 2017-8-1 16:06:37 | 显示全部楼层 |阅读模式

2017(7-9月) 码农类 硕士 全职@Microsoft - 猎头 - 在线笔试 |Other在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
有没有写c++的来解答一下~~

题目

题目
GUIXIANG 发表于 2017-8-1 18:23:50 | 显示全部楼层
同关注, 求解释
回复 支持 反对

使用道具 举报

edisonshen 发表于 2017-8-1 21:53:12 | 显示全部楼层
我觉得是 sizeof(int)是根据system内部计算的,compiler不同或者机器不同就会不一样,如果replaced with 8,意思就是不管什么机器结果都是一样的。 循环内容我觉得没什么意义

补充内容 (2017-8-1 21:55):-google 1point3acres
我也是写java,所以不确定对不对,但是一搜sizeof(int), stackoverflow上都是讨论类似的
回复 支持 反对

使用道具 举报

flygogogo 发表于 2017-8-1 22:24:34 | 显示全部楼层
感觉循环是把一个int的bits反序, sizeof(int)是因为16位机上int是16bits, 32/64位机上int是32bits这样可以保证所有的bits都被翻转. 如果是8那么固定只翻转低8bits
回复 支持 反对

使用道具 举报

 楼主| m1n2b3v4 发表于 2017-8-2 01:48:31 | 显示全部楼层
flygogogo 发表于 2017-8-1 22:24.鐣欏璁哄潧-涓浜-涓夊垎鍦
感觉循环是把一个int的bits反序, sizeof(int)是因为16位机上int是16bits, 32/64位机上int是32bits这样可以 ...

我当时也有考虑这个,可是input是integer,它是直接%2除2,并没有换成bits。java 最大的数字是10位数,再多就overflow啦?所以传进来也不可能10101010100101吧?
回复 支持 反对

使用道具 举报

 楼主| m1n2b3v4 发表于 2017-8-2 01:48:54 | 显示全部楼层
edisonshen 发表于 2017-8-1 21:53
我觉得是 sizeof(int)是根据system内部计算的,compiler不同或者机器不同就会不一样,如果replaced with  ...

这个我也搜出来了,可是它第一问问的是这个function在干嘛-__-,悲剧
回复 支持 反对

使用道具 举报

bearicc 发表于 2017-8-2 02:19:32 | 显示全部楼层
m1n2b3v4 发表于 2017-8-2 01:48
我当时也有考虑这个,可是input是integer,它是直接%2除2,并没有换成bits。java 最大的数字是10位数,再 ...
. From 1point 3acres bbs
%2 就是得到最后一个bit, /2 就是往右shift1位,for 就是计算32次,所以就是reverse bits of 32 bit integer.

补充内容 (2017-8-2 02:21):
准确说是reverse sizeof(int)*8 位的integer bits.
回复 支持 反对

使用道具 举报

dudufish 发表于 2017-8-2 02:21:13 | 显示全部楼层
m1n2b3v4 发表于 2017-8-2 01:48. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
我当时也有考虑这个,可是input是integer,它是直接%2除2,并没有换成bits。java 最大的数字是10位数,再 ...

是reverse给定整数的bit。不停地除2就是把整数不停的右移,%2就是取最右的那个bit位。
回复 支持 反对

使用道具 举报

realhly88 发表于 2017-8-2 02:25:14 | 显示全部楼层
字面上看是按bit翻转一个int,但是方程本身没有处理符号位,而且也不是用移位操作而是算术操作,所以不是完全的翻转,有很大问题。

把sizeof 改成8之后,就成了返回正的,翻转前八位bit。
回复 支持 反对

使用道具 举报

 楼主| m1n2b3v4 发表于 2017-8-2 02:25:49 | 显示全部楼层
bearicc 发表于 2017-8-2 02:19
%2 就是得到最后一个bit, /2 就是往右shift1位,for 就是计算32次,所以就是reverse bits of 32 bit int ...

你这么一说我突然懂了,感谢~
回复 支持 反对

使用道具 举报

 楼主| m1n2b3v4 发表于 2017-8-2 02:26:09 | 显示全部楼层
dudufish 发表于 2017-8-2 02:21. Waral 鍗氬鏈夋洿澶氭枃绔,
是reverse给定整数的bit。不停地除2就是把整数不停的右移,%2就是取最右的那个bit位。

谢谢!懂了!
回复 支持 反对

使用道具 举报

reddest1001 发表于 2017-9-12 01:31:06 | 显示全部楼层
我为什么看不到附件呢?
回复 支持 反对

使用道具 举报

fakewen 发表于 2017-9-17 04:08:07 来自手机 | 显示全部楼层
Reverse by bit. If change to 8, then only reverse the least significant 8bits. And leave all rest bit on the most significant side unset.
回复 支持 反对

使用道具 举报

本版积分规则

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-11-22 15:35

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表