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

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的练级攻略

网游玩家必备五大的FPS竞技类射击游戏竞技游戏,射击种类的节奏最快,而且画质和操控也很好。目前除了主流的CF逆战CSGO和守望先锋等,还有以下五款高画质FPS竞技射击游戏,都是网游玩家必备的作品,会有你喜欢的一款。使命永劫无间显示一直更新无法进入游戏怎么办永劫无间公测之后,满心欢喜点开游戏发现游戏登陆器一直显示更新,并且没有任何动静,没办法愉快地玩耍。上网一看有很多老哥有同样的问题,所以小编在这里整理了一些解决方法,供大家参考,有什和平精英还是武侠游戏?主播1v3使用独门绝技,天外飞仙太帅对于经常玩和平精英的小伙伴们来说,想必知道若想在游戏中取得一个较好的名次,除了要拥有比较不错的运气外,技术和操作也非常重要,毕竟从本质上来说,和平精英也是一款FPS游戏。就在不久前潜伏老外营地刺探敌情,海盗游戏ATLAS主播靠情报打胜仗在ATLAS这款以海盗为题材的Steam生存类沙盒游戏中,玩家完全可以根据自己的想法选择适合自己的玩法,如果是硬核玩家,不妨成为格斗家,探险家或者军事家,如果是比较佛系的玩家,可以赚钱小游戏2今天向大家介绍第二个赚钱小游戏我的饭店极速版这一款游戏本人试玩了九天,但是并没有像广告视频那样说的无广告,无提现标准,直接到账。我的钱包里确实显现出有钱,但是提现却要一定标准,从前羊村守护者4寒天攻击懒羊羊,木偶兽来袭,梦幻联动哈喽,大家好。在本期的羊村守护者4决战次时代中,灰太狼小灰灰父子冰释嫌隙,联手打败了影子怪兽。不过躲在暗处的boss并不甘心失败,随即建造了一台名叫寒天的机器人,命令其去收集卡牌。游戏社区新势力,小红书的用户们这么玩上个月,小红书的上的一则探店帖出了圈。在小红书上,关于出行和美食类的探店帖子随处可见,但特殊的是,这个帖子中的店并非现实中的网红店,而是摩尔庄园里的一家餐厅,因为店主用广东话招待客和平精英主播倒立洗头成真?直播现场翻车3次,实现难度极大经常观看直播的小伙伴想必知道,经常会有一些游戏主播在直播的时候,为了增加节目效果,也让自己的游戏更具挑战性,经常会增加一些比较有趣的Flag挑战,因此而翻车的主播并不在少数。就在不传奇手游新手攻略今天小编带大家了解了解这款传奇手游一传奇霸主新手攒材料攻略很多传奇老玩家熟知的上古起源装备,点点神力,大小神魔等等散人打宝,老板过瘾,一切只为激情!没有套路,没有暗坑,真正的低消费企鹅一统游戏直播的梦碎了!虎牙与斗鱼的合并被否虎牙与斗鱼的合并被否决了,企鹅一统游戏直播的碎了。如果这个结果都猜不到,那你就太小看反垄断的决心了。出于职业习惯我把3200字的原稿认真看了3遍,有几个细节让人拍案叫绝,不得不佩服王者荣耀如果只有一个ban位,你会禁哪个辅助呢?天上九头鸟,地上有火鸟。我是火鸟,每天都会给你带来王者资讯和攻略,关注我,让你上分不再难!近期几个赛季被ban最多的就是辅助了,辅助型玩儿家已经尽力在拓宽英雄池了,但是还是难免会被
有人称现在王者峡谷平衡的崩塌源自于马可波罗这个英雄,你认同吗?本期话题王者峡谷平衡的崩塌源自于马可波罗这个英雄,你同意这种说法吗?王者荣耀英雄众多,每个英雄都有其独特的玩法,我们不好评判单个英雄的技能机制是否合理,因为那是策划的事情。但有件事想入手一个卢锡安的皮肤,源计划和西部魔影哪个会比较适合?很高兴为你解答!卢锡安的西部魔影存在较大的争议。由于圣枪游侠在游戏当中的死忠玩家还是非常多的,而他的几款老皮肤都有着非常不错的手感与打击感,而西部魔影面对的最大对手就是源计划皮肤了DNF关于属强与属性白字,为什么强行堆属强却是负提升?数据讲解一下好吗?DNF里属强是一项非常重要的属性,对于伤害是有很大的提升,在属强为0的时候每22点就可以提升10的伤害。但是属强同样是有稀释的,存在边际效应指自己在有某项词条伤害的时候,再去堆同样DNF签到送的黄金调整箱竟然可以无视等级,首把满属性榜首武器出炉,你们有吗?地下城与勇士这款游戏现如今已经推出有十年之久了,相信不少网友都玩过这款游戏,而最近DNF也是迎来了95版本的更新。在95版本更新之后,无数的冒险家为了在阿拉德大陆成为最强的冒险家都DNF本命套一直不出,其他套却已经齐了,是一种怎样的体验?作为一只皮皮瞎玩家,我对于本命套并不热衷,哪一套都能玩,哪一套都不能说完爆其它史诗防具,要不然史诗改版岂不是白费努力了其实真实原因大家都能猜出来,非酋玩家无可奈何啊!要是能选择的话魔兽世界怀旧服ZG变身拳套效果如何,这两件装备真的是鸡肋吗?前言众所周知,魔兽世界怀旧服中并没有太多的变身道具,有限的变身道具也只是单纯的娱乐,无法增加属性,然而在祖尔格拉布中却有一对武器,凑齐之后可以变身,并且变身之后增加的属性还非常的诱王者荣耀中猴子怎样出装才能打出最高暴击?孙悟空是王者峡谷里一个以暴击著称的英雄,他的被动里拥有百分之二十的暴击几率和百分之一百五的初始暴击效果。在后期出装完整之后,几乎每一棍都是有暴击的存在的,而且暴击伤害可以达到一棍四玩家建议取消勇者积分机制,太多伪王者用长时间混分,你们支持吗?随着勇者积分的改动,身边越来越多人混上王者,完全不需要任何的意识与操作,只需要你经常玩就可以实现梦想勇者积分有存在必要吗?王者是很多人都梦想,但是随着实现难度的降低,这个目标变得越有什么无脑游戏推荐?无脑游戏这个定义太广泛了,小编的理解就是刷刷刷,刺激,怎么爽怎么来,那么以下几款游戏你一定会喜欢1。骑马与砍杀系列,骑砍系列一直被玩家奉为神作,在里面你能身临其境感受在马上打仗的快实况足球手游如何变大神?我是实况足球Sir我来回答首先,实况足球手游是一款操作类足球游戏,比Fifa手游操作要求要高,不是大力按键球就能进球。所以玩家得具备一定的操作技巧及熟练度。其二,你要熟悉球员,熟悉关羽黄忠双刀对赵云马超的双枪,谁会赢?茶余饭后侃三国,可能侃到这类不伦不类的问题,但罗贯中在三国演义中没让关羽黄忠双刀对战赵云马超双枪,因此任何侃话只能是瞎猜,不足为据。关羽战长沙曾和黄忠打过,二人一二百回合未见输赢,