范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Math。abs竟然返回了负数?

  事情是这样的。
  某一天扯扯群里发来一段代码:
  读者提问道,为啥这个 pos 还要判断一下?
  这代码一看我就熟悉,RocketMQ 的源码,如果你看过源码你会发现到处都有这样的判断。
  想着已经取绝对值了,然后再取余,肯定是正数啊,这  if(pos<0)  不就是多余的判断吗?
  那我们先看一下  Math.abs  的源码:
  可以看到,十分简单粗暴,再结合一下 int ,不知道大家是否已经发现了问题?
  不卖关子了。
  int 的最大值是(2^31) -1,而最小值是-2^31,所以按照 abs 的逻辑,如果a是最小值,则最小值前面加个负数就变成了 2^31,而 int 所能表示的最大值是 (2^31) -1,这比最大值还大了个 1,导致向上溢出,所以此时得到的结果还是最小值。
  你可以试着运行一下上面的结果,所以说 Math.abs 得到的不一定是正数!所以 RocketMQ 的这个判断是有必要滴。
  再解释一下为什么 int 最小值取绝对值还是等于它本身。
  int 是 32 位,为了便于演示,我就拿 8 位来举例子,反正道理是一样的。
  在 Java 中的数字的实现都是有符号位的,不像 C 有个 unsigned 来表示无符号,有符号的数字实现是用最高位来表示符号位,1表示负数,0表示正数。
  回到上面的例子,要表示的正数比最大值还大1,那就把最大值加个1呗。
  图中就是向上溢出得到了最小值,所以最小值取绝对值得到的值比最大值大一,导致向上溢出,又变成了最小值。
  因此  Math.abs(Integer.MIN_VALUE) = Integer.MIN_VALUE
  那为什么 8 位表示的是-128到127而不是-127到128?
  8位二进制,一共有 2^8=256 个坑位,所以能表示 256 个数字,理论上随便怎么表示都ok,你表示-254~1都行。
  但是我们规定无符号数是 0~255,有符号数规定是-128 ~ 127。
  如果有符号数要规定成-127到128并不是不行,但是这样就比较麻烦。
  按照-128 ~ 127这样的实现, 我们只要通过最高位就可以判断一个数的正负 ,而-127~128就需要排除128这个特例,也就是之前只需要判断最高位,现在变成需要判断最高位为 1 且其它位不全是 0 才是负数。
  这样电路设计也要变复杂了,所以我们规定是 -128到127,32位也同理。
  Math.absExact
  这种出错了但是没有提示的 Math.abs 肯定是不好的,所以在 JDK 15 出了个  Math.absExact
  也就是会抛错,而不是返回个错误的结果。  最后
  有位群友还说面百度的时候被问过。
  面试题是真的多,防不胜防,所以要抓清源头和本质,以不变应万变。
  转载自:https://mp.weixin.qq.com/s/HYM_lblCGYEwnuzM83Y2HQ
  原创:yes的练级攻略

KPI比赛刘伟家族夺冠,神鸡营被针对惨,韩涵赛后笑开了花不知道大家最近有没有关注一档叫做KPI比赛,别看这个比赛跟KPL只有一字之差,赛事的精彩程度跟节目效果跟KPL没有什么区别,作为一档面向于主播旗下战队的比赛,本次的比赛中也是邀请到王者荣耀不是真全能就别挂全能标开游戏,进去后还总要抢位置哈喽大家好,我是铃铛儿自从有了全能选手这类头衔和标志以后,很多玩家都会去刷熟练度,去刷英雄战力,以此来让自己可以获得全能选手的标志,甚至是更高的全能等级,但是铃铛儿却经常遇到很多另全民学霸版本更新公告亲爱的校长辞旧迎新之际,全民学霸2021年岁末新版计划将在12月29日30日(具体更新时间,敬请留意游戏内邮件通知)欢乐上线。新时装元旦节日活动等精彩新内容,请您抢先预览本次更新内传奇3怀旧手游热血重燃,梦回传奇,传奇3经典之作再现哈喽,小伙伴们好,我是小林!今儿给各位带来了的是传奇3怀旧手游,可以说这款传奇3怀旧是今年现今最火爆之一的传奇手游系列!(文末有惊喜)传奇3怀旧继承老端游传奇3核心思想,传奇特色,这脑洞太大!任天堂对手秀全球最快电脑跑起来快过特斯拉点击右上方关注,第一时间获取科技资讯技能攻略产品体验,私信我回复01,送你一份玩机技能大礼包。12月28日,根据知名游戏公司SEGA(世嘉)消息,为了给正在举办的2021世嘉Ste虎牙KPI杯落幕,神鸡营输掉比赛,究竟是什么原因?不久前王者荣耀官方赛事总决赛落下了帷幕,紧接着虎牙KPI杯也是顺利的结束。最终神鸡营被刘伟家族以31的巨大优势带走。按理来说双方都是国服水准,都是路人玩家中的巅峰水平,OB5的赛制王者荣耀新手三部曲大家好,我是殃及。今天小编给大家带来了一个笑点哦,一起来看看吧。之前有刷到过大仙发的一个视频,叫做新手的三部曲,主要是给新手推荐的三个英雄。我们一起来看看吧。1。推荐新手玩鲁班七号幻塔极雷双刃分析操作好才能提高伤害幻塔前期比较好用的输出武器是极雷双刃,极雷双刃看起来刮痧其实是隐藏的输出武器pvp和pve都很好用,就是比较吃操作一些,需要会背刺的玩家来操作伤害上限是比双枪来的高的。幻塔极雷双刃LOL峡谷最快乐的模式,可惜有时间限制不知道是不是我们的生活节奏越来越快。人们总是有一些无法完成的事情,而且总是看起来很忙。在快节奏的生活中,我们很少静下心来思考人生。问题,渐渐的我们已经适应了这种生活方式。快节奏的生经典游戏天之痕艰巨的DOMO支线任务,完成后获得两大不死神器在整个轩辕剑系列中,论作品口碑和诚意的话,轩辕剑3和天之痕绝对可以脱颖而出。在早年就已经被玩家们称为RPG游戏的两座里程碑。游戏剧情和音乐可以用荡气回肠余音绕梁来形容。每一位角色都日常安利重返帝国传承RTS经典玩法的灵活策略手游随着SLG游戏类型在手游市场上如火如荼,那些主流产品逐渐成熟完善的玩法与框架,仿佛变成了标准答案。通常同类游戏就算偶有创新,也不会去改变其核心框架。但最近重返帝国做出了具有颠覆性的
炉石传说是谁说新版本猎爹不行的呢?新卡强度不要太爆炸!凤凰年的活动已经开始,今天4月1日可不仅仅是愚人节噢,在炉石里今天可是一个重大的日子。在之前就发布在官网的凤凰年游戏规划里,除了新英雄的到来以及卡牌包的改动等让玩家记忆深刻之外,排炉石传说萨满生态卡组引热议,暴打DH,玩家直言针对意图太明显萨满站起来了!炉石传说新版本通灵学院的预购筑往往能吸引到不少喜爱炉石传说的玩家,在这次新版本的预购筑中,萨满的预购筑成为了无数玩家们所讨论的对象。针对意图明显的构筑方式让不少玩家们炉石传说还在为牧师卡组造价发愁?新福利助你快速入手版本之子最近,炉石传说的牧师职业可以说是非常火爆,超高的抗性搭配极为独特的构筑思路让这套卡组成为了当前版本中强度极高的存在。不过高昂的造价也是让不少玩家为之头疼,毕竟高强度的卡组往往会有高炉石酒馆战棋佛丁移除,新版本正确上分就要避开这两个种族炉石传说的酒馆战棋前不久迎接了新的版本,龙卡加入,7位新英雄加入,让下棋玩家们再次的体验了新环境变迁的快感,而在今天又有了一波小更新酒馆战棋中移除了佛丁。佛丁的强势已经是有目共睹,炉石传说标准冰法重出江湖?法师成为形态最多,最快乐的赢家!炉石传说的新版本外域的灰烬在经过一星期的洗礼之后,并没有就此沉寂下去,即使在当前环境没有新补丁到来之前,依旧有许多新的卡组冒出头来。其中最引人注目的就是法师卡组。短短一周内就诞生了炉石传说一天就能上传说?新天梯升段竟然这么简单想必这次新的天梯系统把大伙都搞得晕头转向,什么段位保护额外星数等一大堆新系统扑面而来,小编一开始也是懵懵懂懂的,经过一整晚的苦战,终于在这剪不断理还乱的复杂系统中找到了最关键的源头历代名人竟被大鹅屡次gank,忘川风华录首测上演未命名的鹅说起未命名的鹅,想必不少玩家们都会想到那款操作大鹅捉弄路人的游戏,那只挥动翅膀不断gank路人的大白鹅给不少人留下了深刻的印象。近日,网易新游忘川风华录在首测中就出现了一只非常顽皮炉石传说小野菊能顶半边天新版本要斩杀就搞野兽龙猎!炉石传说的新版本外域的灰烬已经上线一段时间,新版本刚开始的天梯在新职业恶魔猎手的冲击下提速不少,很多中慢速卡组被打得销声匿迹。而随着几次调整,恶魔猎手的强度和热度都有所下降,天梯上炉石战棋新英雄初亮相,瓦丝琪女士或称小托奇经过一个月的时间,酒馆战棋终于迎来了新一轮的更新,在这次的更新中,酒馆新增了三位英雄和一位随从,不得不说官方这波更新来得非常及时,在新版本的热度渐变减小的时候,马上推出酒馆的更新,炉石传说酒馆战棋龙体系成为最快上分方式,核心卡牌仅需两张?酒馆战棋中的海盗体系已经上线了一段时间了,酒馆战棋中的环境也开始逐渐趋于平稳,不少玩家们都在众多打法和思路中选择最适合自己的体系进行上分。而龙体系这一以身材见长的英雄就成为了玩家们炉石战棋玛维影歌新发现,难道升本才是正确的选择吗酒馆战棋终于迎来了新版本的更新,在这次更新我们不难发现,最为亮眼的英雄应该就是凯尔萨斯逐日者了,相比其他两位新英雄,凯子的强度确实高出了不少,但同样是新英雄的瓦丝琪女士和玛维影歌一