Java基础-原码反码补码

                                  作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

  注意,我们这里举列的原码和反码只是为了求负数的补码,在计算机中没有原码,反码的存在,只有补码。

一.原码

1>.正数的原码就是它的本身

  假设使用一个字节存储整数,整数10的原码是:0000 1010

2>.负数用最高位是1表示负数

  假设使用一个字节存储整数,整数-10的原码是:1000 1010

二.反码

1>.正数的反码跟原码一样

  假设使用一个字节存储整数,整数10的反码是:0000 1010

2>.负数的反码是负数的原码按位取反(0变1,1变0),符号位不变

  假设使用一个字节存储整数,整数-10的反码是:1111 0101

三.补码(再次强调,整数的补码才是在计算机中的存储形式。)

1>.正数的补码和原码一样

  假设使用一个字节存储整数,整数10的补码是:0000 1010(第三次强调:这一串是10这个整数在计算机中存储形式)

2>.负数的补码是负数的反码加1

  假设使用一个字节存储整数,整数-10的补码是:1111 0110(第三次强调:这一串是-10这个整数在计算机中存储形式)

四.在计算机中,为什么不用原码和反码,而是用补码呢?

  因为在使用原码,反码在计算时不准确,使用补码计算时才准确。

1>.使用原码计算10-10

         0000 1010  (10的原码)

    +        1000 1010   (-10的原码)

------------------------------------------------------------

         1001 0100  (结果为:-20,很显然按照原码计算答案是否定的。)

2>.使用反码计算10-10

      0000 1010  (10的反码)

    +   1111 0101  (-10的反码)

------------------------------------------------------------

      1111 1111  (计算的结果为反码,我们转换为原码的结果为:1000 0000,最终的结果为:-0,很显然按照反码计算答案也是否定的。)

3>.使用补码计算10-10

      0000 1010  (10的补码)

   +   1111  0110  (-10的补码)

------------------------------------------------------------

      1 0000 0000  (由于我们这里使用了的1个字节存储,因此只能存储8位,最高位(第九位)那个1没有地方存,就被丢弃了。因此,结果为:0)

五.小试牛刀

  有了上面的案例,接下来,我们来做几个小练习吧,分别计算以下反码表示的十进制数字是多少呢?

1>.0b0000 1111

  相信这个数字大家异口同声的就能说出它的答案是:15(因为正数的补码和原码一样)

2>.0b1111 1111

  计算过程:0b1111 1111(补码)------>0b1111 1110(反码)------>0b1000 0001(原码)

  将其换算成原码之后就可以得到最后的结果为:-1

3>.0b1111 0000

  计算过程:0b1111 0000(补码)------>0b1110 1111(反码)------>0b10010000(原码)

  将其换算成原码之后就可以得到最后的结果为:-16

4>.0b1000 0001

  计算过程:0b1000 0001(补码)------>0b1000 0000(反码)------->0b1111 1111(原码)

  将其换算成原码之后就可以得到最后的结果为:-127

Java基础-原码反码补码的更多相关文章

  1. JAVA:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题(5)

    一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...

  2. java基础知识-原码,反码,补码

    1.正数:原码,反码,补码:都一样. 2.负数:和正数的储存方式不同,负数都是以补码形式存储的. <1>负数的补码 把负数的原码除了符号位取反后再+1. <2>负数的原码 把对 ...

  3. Java基础 - 原码、反码、补码

    目录 机器数 真值 原码 反码 补码 为什么使用原码. 反码. 补码 机器数 所有数字在计算机底层都是以二进制形式存在的.它的表现形式叫做机器数,这个数有正负之分,最高位为符号位.0 表示正数, 1 ...

  4. java原码反码补码以及位运算

    原码, 反码, 补码的基础概念和计算方法. 对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式. 1. 原码 原码就是符号位加上真值的绝对值, 即 ...

  5. Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题

    一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...

  6. Java 原码 反码 补码

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

  7. 位移&二进制转换&原码&反码&补码

    << 左移 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零. 格式 需要移位的数字 << 移位的次数 计算过程 1. 按二进制形式把所有的数字向左 ...

  8. 原码 & 反码 & 补码 & 详解

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

  9. C语言原码反码补码与位运算.

      目录:     一.机器数和真值     二.原码,反码和补码的基础概念     三.为什么要使用原码,反码和补码     四.原码,补码,反码再深入     五.数据溢出测试     六.位运算 ...

随机推荐

  1. 记录一次Docker For Windows10镜像加速器配置

    1.访问https://www.daocloud.io 注册账号 2.访问资源->加速器,或者直接访问网址https://www.daocloud.io/mirror,页面中间有加速配置,例如我 ...

  2. Vue全家桶介绍

    一直不清楚全家桶是什么玩意,上网搜了一下,才知道就是平时项目中使用的几个依赖包,下面分享一下 Vue 全家桶介绍 Vue有著名的全家桶系列,包含了vue-router(http://router.vu ...

  3. 【翻译】Brewer's CAP Theorem CAP定理

    Brewer's CAP Theorem 原文地址:http://www.julianbrowne.com/article/brewers-cap-theorem Brewer’s (CAP) The ...

  4. RyuBook1.0案例二:Traffic Monitor项目源码分析

    Traffic Monitor源码分析 从simple_switch_13.SimpleSwitch13控制器继承并开发 class SimpleMonitor13(simple_switch_13. ...

  5. IOTA price analysis

    Iota coinchart Look at the trendline drawn in red color, at the very first beginning of this month, ...

  6. 学会清理.rncache 文件、清理已经安装的三方文件,三方引入文件

    1.来到指定文件夹.rncache路径,不会的可以百度,然后手动删除. 2.更新RN引入的文件的版本号,要记得将yarn.lock (.lock文件删掉) 3.我用 npm install 之后,然后 ...

  7. 团队项目M1展示成绩和Week 10分数

    根据M1项目评审的分数,分档打分得到的M1项目成绩.

  8. 我与git“美妙”的一天

    今天是第一天使用git,苦不堪言,感觉服务器和自己都要爆炸了,弄了半天才马马虎虎会了一点,基本流程如下 1.在mukever.online注册用户 2.下载git for windows(一个客户端) ...

  9. everything 提供http和ftp的功能

    1. 早上起床看知乎,发现everything 有http和ftp的功能, 简单看了一下的确很强大.. 就是有点危险.. 功能位置. 2. 最下面有FTP和HTTP 可以进行启用 这是http的 建议 ...

  10. centos7 登陆报错 grep:write error

    出现这个原因是因为磁盘空间满了 通过df -h查看存储空间 发现磁盘空间满了,可以用 find / -type f -size +1000M 查找大于1000M的文件删除 然后找到用rm -rf 命令 ...