补码怎么算,原码反码补码计算公式及关系

*推荐阅读****企业回雅克德罗,名士,尊达手表维修服务热线:400-185-6077,江苏省手表维修服务地址位于:南京市秦淮区汉中路1号新街口国际金融中心10楼H;苏州市工业园区苏州中心办公楼C座2

* 推荐阅读*

*

*

*

企业回雅克德罗,名士,尊达手表维修服务热线:400-185-6077,江苏省手表维修服务地址位于:南京市秦淮区汉中路1号新街口国际金融中心10楼H;苏州市工业园区苏州中心办公楼C座22层08室;无锡市梁溪区人民中路139号恒隆广场写字楼1座11层1104室。服务时间。

*

在平时看各种框架的源码的过程中,经常会看到一些位移运算,所以作为一个Java开发者是一定掌握位移运算的。

01 正数位移运算

Java中有三个位移运算:

① <<:左移

② >>:右移

③ >>>:无符号右移

我们直接看一下Demo:

原码反码补码计算公式及关系,System.out.println(2 << 1); // 4System.out.println(2 >> 1); // 1System.out.println(2 >>> 1); // 1System.out.println(-2 << 1); // -4System.out.println(-2 >> 1); // -1System.out.println(-2 >>> 1); // 2147483647

乍一眼看到上面Demo的打印结果,你应该是懵逼的,接下来我来解释一下这个结果到底是如何运算出来的。

2 << 1:十进制“2”转换成二进制为“00000000 00000000 00000000 00000010”,再将二进制左移一位,高位丢弃,低位补0,所以结果为“00000000 00000000 00000000 00000100”,换算成十进制则为“4”

2 >> 1:十进制“2”转换成二进制为“00000000 00000000 00000000 00000010”,再将二进制右移一位,低位丢弃,高位补0,所以结果为“00000000 00000000 00000000 00000001”,换算成十进制则为“1”

补码是这样计算的:\r\n首位为符号位。\r\n符号位为0表示正数,正数的补码=原码=反码。\r\n符号位为1表示负数,负数的补码等于将符号位后面的位全部取反再加1。另外,一个数的补码的补码等于这个数的原码,所以如果。

对于这两种情况非常好理解,那什么是无符号右移,以及负数是怎么运算的呢?

我们先来看-2 << 1与-2 >> 1,这两个负数的左移与右移操作其实和正数类似,都是先将十进制数转换成二进制数,再将二进制数进行移动,所以现在的关键是负数如何用二进制数进行表示。

02 原码、反码、补码

2.1 原码

2.2 反码

一个数字用原码表示是容易理解的,但是需要单独的一个bit来表示符号位。并且在进行加法时,计算机需要先识别某个二进制原码是正数还是负数,识别出来之后再进行相应的运算。这样效率不高,能不能让计算机在进行运算时不用去管符号位,也就是说让符号位也参与运算,这就要用到反码。

正数的反码和原码一样,负数的反码就是在原码的基础上符号位保持不变,其他位取反。

那么我们来看一下,用反码直接运算会是什么情况,我们以5-3举例。

正数的补码等于本身,负数的补码等于反码+1:例如:X=0b11(3),四比特表示原码=0011(3),对应反码为=0011(3),补码为=0011(3);X=-0b11(-3),四比特表示原码=1011(11),对应反码为=1100(12),补码为1101(

5 - 3等于5 + (-3)

这不对呀?!! 5-3=1?,为什么差了1?

我们来看一个特殊的运算:

我们来看一个特殊的运算:

我们可以看到1000 0000表示-0,0000 0000表示0,虽然-0和0是一样的,但是在用原码和反码表示时是不同的,我们可以理解为在用一个字节表示数字取值范围时,这些数字中多了一个-0,所以导致我们在用反码直接运算时符号位可以直接参加运算,但是结果会不对。

2.3 补码

为了解决反码的问题就出现了补码。

正数的补码和原码、反码一样,负数的补码就是反码+1。

5-3=2!!正确。

再来看特殊的:

1-1=0!!正确

再来看一个特殊的运算:

补码的表示方法是:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1 (即在反码的基础上+1)。因此我们在求一个数的补码之前,应当先求出这个数的原码。将一个数转化为二。

0+0=0!!也正确。

所以,我们可以看到补码解决了反码的问题。

所以对于数字,我们可以使用补码的形式来进行二进制表示。

03 负数位移运算

我们再来看-2 << 1与-2 >> 1。

-2用原码表示为10000000 00000000 00000000 00000010

-2用反码表示为11111111 11111111 11111111 11111101

-2用补码表示为11111111 11111111 11111111 11111110

-2 << 1,表示-2的补码左移一位后为11111111 11111111 11111111 11111100,该补码对应的反码为

补码的加法是怎么算的?就是按照二进制相加,逢二进一。例如:[+45]补码 = 0010 1101 [-83]补码 = 1010 1101 --按照二进制相加--- 得: 1101 1010 = [-38]补 。

该反码对应的原码为:符号位不变,其他位取反,为10000000 00000000 00000000 00000100,表示-4。

所以-2 << 1 = -4。

同理-2 >> 1是一样的计算方法,这里就不演示了。

04 无符号右移

上面在进行左移和右移时,我有一点没讲到,就是在对补码进行移动时,符号位是固定不动的,而无符号右移是指在进行移动时,符号位也会跟着一起移动。比如-2 >>> 1。

-2用原码表示为10000000 00000000 00000000 00000010

-2用反码表示为11111111 11111111 11111111 11111101

补码怎么算

-2用补码表示为11111111 11111111 11111111 11111110

-2的补码右移1位为:01111111 11111111 11111111 11111111

右移后的补码对应的反码、原码为:01111111 11111111 11111111 11111111(因为现在的符号位为0,表示正数,正数的原、反、补码都相同)

所以,对应的十进制为2147483647。

也就是-2 >>> 1 = 2147483647

05 总结

文章写的可能比较乱,希望大家能看懂,能有所收获。这里总结一下,我们可以发现:

2 << n = 2 * (2的n次方)

m << n = m * (2的n次方)

如果觉得有所收获的话可以点赞关注我和转发分享给更多的程序猿们哦~

上一篇 2022年12月14 09:06
下一篇 2023年01月21 19:03

相关推荐

  • 十进制怎么算,十进制如何计算过程

    必须掌握的知识点:1、进制的加、乘运算表2、进制的运算前一章我们介绍了什么是进制,十进制如何计算过程,以及进制的书写。进制的本质是查数,每一种进制之间都是一个独立的体系,所以它们都能单独运算。下面为大

    2023年02月04 230
  • 准考证号怎么查

    ️通过推算得出准考证号这种方法需要动些脑筋了,准考证号推算说明:准考证的格式是这样的。1️⃣最前面的六位:地区和学校2️⃣中间的四位:考试时间和类型️通过学校查询得出准考证号通过学校查询据说最简单、最

    2023年01月23 268
  • 怎样介绍自己,介绍自己简短话

    编者按:时代是出卷人,人民是阅卷人。一路走来,中国共产党没有也永远不会辜负历史的选择、人民的期望。央视网《人民领袖习近平》专栏推出系列创意互动特稿《这十年》,重温党的十八大以来习近平总书记治国理政的伟

    2022年12月26 235
  • 作文提纲怎样写,提纲怎么写(范本)

    编写作文提纲常用的有以下三种方法:一、叙述式。也就是以简略的文字,用叙述的方式来编写提纲。如一个同学的作文《记一次篮球比赛》的提纲:1.下午放学后,我们班和五一班要进行篮球比赛。(略写)2.我们班没有

    2022年12月28 256
  • 自考专升本怎么报名,自考专升本怎么报名入学

    有了本科学历,也就能获得更多的机会,这也促使很多大专毕业生想要通过自考专升本方式来提升学历,那么,自考专升本报名条件要求高吗?自考本科一般需要考多少门课程能够拿证呢?针对以上问题,我们一起来了解下吧。

    2023年01月22 286
  • ppt怎么画图,如何在ppt里随意画图

    我们在任何的工作场合中。都要用PPT来总结或者分析工作。所以你PPT的美观好坏取决于你的工作能啦!今天来教教大家。怎么用PPT将形状合成一张图片首先先打开PPT然后新建一张PPT。然后选择形状。先画一

    2023年02月04 237
  • 怎样做到四不伤害,谈谈岗位如何做到四不伤害

    今天给大家分享一套涵盖焦化、化工领域的学习资料包,包含焦化全套流程图超清合集+143个化工标准与规范+8本化工书籍,谈谈岗位如何做到四不伤害,焦化全套流程图将焦化的各个细节处理的非常到位,143各化工

    2023年01月04 206
  • 韩语骂人的话,韩语脏话速成中文谐音

    正所谓人不犯我我不犯人,想必大家对于‘阿西吧’不陌生吧~韩语骂人的话仅作解释,请小心使用~1.젠장妈的,该死的(谐音:尖讲)(较文明的用语)2.변태变态(谐音:票胎)(和中文的意思大概相同)3.멍청이

    2022年12月10 202
  • teNeues(Creator)《Prix Pictet 05: Consumption》作品简介与读书感悟

    ·上海摄影艺术中心(2021年9月11日-10月24日)·北京今日美术馆(2021年11月13日-12月12日)入围“希望”主题的艺术家包括:沙希杜尔·阿拉姆(ShahidulAlam),1955年生

    2022年12月16 295
  • L.R.FordJr.《Flows in Networks》作品简介与读书感悟

    金砖国家领导人第十一次会晤巴西利亚宣言全文如下:金砖国家领导人第十一次会晤巴西利亚宣言BRASILIADECLARATION11thBRICSSummit前言读书笔记:书名:童年作者:高尔基好词瑗际歪

    2022年12月15 230
  • 怎样去新加坡做生意,怎样在新加坡做小生意

    事实上,新加坡的犯罪成本很高,就连随地吐痰和乱扔垃圾都会面临很重的罚款,更不用说偷窃罪了。完善而严苛的法律培养出新加坡人的高度自觉性,遍布全岛的监控器则无时无刻不在保障居民的安全感。4、医疗先进,服务

    2023年01月03 239
  • 怎样开方,数学开方公式怎么计算

    互联网医疗一直都很火热,随着大厂们相继入局,无疑让这个领域正变得前所未有的热闹。受疫情的影响,近两年互联网医疗产品发展的非常迅速,很多功能比如:预约挂号、在线问诊、报告查询、在线缴费…已经成为了人们去

    2023年01月01 285
  • 汉字歇后语,趣味汉字歇后语

    歇后语是中国劳动人民自古以来在生活实践中创造的一种特殊语言形式,是一种短小、风趣、形象的语句。歇后语由前后两部分组成:前一部分起&34;作用,像谜面,后一部分起&34;的作用,像谜底,十分自然贴切。在

    2022年12月10 223
关注微信