上篇文章我们提到过在计算机中所有的文件底层的存储都是使用二进制的,右键点击一个文件然后点属性,我们可以看见该文件的大小,如:1.06 KB (1,094 字节)

这里我的文件大小为1094个字节,字节(byte)是电脑中的最小计量单位,上面依此是千字节Kb、兆字节Mb、吉字节Gb……1024b=1Kb;1024Kb=1Mb;1024Mb=1Gb,但是不管多大,其都是由一个个二进制数组成的。

那一个字节是由多少个二进制组成的呢?八位。

也就是说假如我们玩一个字节的话,十进制的1对应的是二进制的00000001;

1.符号位

其中最高位是符号位,0表示这个数是正数,1表示这个数是负数,后面7位表示该数的值。

也就是说 十进制的 3 对应二进制的数为:00000011,十进制的 -3 对应的二进制的数为:10000011

最高位只表示符号位,只表示该数到底是正数还是负数,不参与进行数值计算

那如果我们玩的是两个字节呢?那要表示十进制的-3,则是1000000 00000011

只要记住最高位是符号位,最高位的0表示该数是正数,1表示该数是负数即可。

2.原反补

我们可以使用十进制进行算术计算,比如3+2 结果等于5; 9-3结果等于6,同样,我们也可以使用二进制进行算术计算。

3+2的计算,我们先把十进制的3和十进制的2转成对应的2进制的数。分别是:

00000011

00000010

相加算后可知(1+0等于1,1+1 等于10)结果为00000101,这是二进制的结果,我们把这个数转成十进制看看到底是不是5呢?

2^2*1 + 2^1*0 + 2^0*1 = 5  上篇已经介绍过如果将二进制转成十进制,忘了的同学请自行翻到上篇回顾一下。

这样看起来结果正确,那么我们再用二进制计算一下9-3

9的二进制:00001001

3的二进制:00000011

一相减,发现结果等于00000110,验证一下发现没错,等于6.

但是!计算机当中是没有减法的,只有加法。

为什么没有减法只有加法呢?其实道理很简单,你想想假如让你制作一个机器,这个机器你制作成1个功能制作起来简单呢?还是做多个功能制作起来简单?不止是制作简单,还有功能多了是不是大小也不能那么精巧了?

那,计算机里只有加法的话,我非要计算减法的话,要怎么算呢?

其实,加法也可以实现,利用我们小学体育老师教导我们的数学知识得知,9-3可以转成9+(-3),这样就把减法转成了加法。

9的二进制: 00001001

-3的二进制:10000011

相加后的结果为:10001100,这明显不是6嘛,骗人。

是的,假如只有加法的话,那么直接使用二进制进行计算的话,是会导致结果出现问题,那么我们聪明的人类设计出了补码,只要用二进制的补码进行计算就没有问题。

之前我们学的的是称作二进制的原码,那我们如何把二进制原码转成补码呢?使用反码,反码是原码通向补码的桥梁

说了这么多抽象的文字,大家可能都晕了,没关系,看到下面的转换案例,马上清晰明了。

1.正数的原码反码补码一致

也就是说00111111 这样的正数,他的补码也是00111111

2.负数

2.1  负数的反码是符号位(最高位)不变,其他的0变1,1变0

2.2  负数的补码是反码+1

假如现在有个负数是 十进制的-27对应的二进制的原码为 10011011

那么根据反码规则,最高位不变,还是1,其他位0变1,1变0,成为11100100

最后,补码的规则是反码+1,也就是11100101

会算了吗?如果不会的话,可以自己找几个数练习练习。

那么回过头我们把之前的9-3再算算,这里补充个知识点,计算机中存储的都是二进制的补码,因为正数的原码反码补码一致,所以我们之前的计算拿原码拼命的计算也是一样的结果。但是我们心里得有个谱,计算是采用的补码。

9的二进制原码: 00001001

正数的原反补一致,所以

9的二进制补码: 00001001

-3的二进制原码:10000011

-3的二进制反码: 11111100     (最高位不变,其他的0变1,1变0)

-3的二进制补码: 11111101      (反码+1)

那我们应该是把9的补码和-3的补码相加进行计算,

9的二进制补码:  00001001

-3的二进制补码: 11111101

得到结果???不会算了?好像超了位数,没关系,你当做是水杯的只能装8L的水,但非要往里面倒9L的话,装不下的就装不下,只保留最后八位即可。

我们算下得到结果是1 00000110 最左边的那位装不下,于是我们就截取了剩余00000110,验证下结果为6,没错。

OK,到此我们已经掌握了符号位和原反补的知识,最后做几个练习巩固一下吧。

练习1

默认一个字节,使用二进制进行计算29-73,(友情提示:补码和补码计算出来的结果仍为补码)

Java基础教程-首篇前序-二进制符号位及原反补相关推荐

  1. Java入门基础教程第一篇

    Java入门基础 Java是是一门面向对象编程语言,现在广泛使用,名声和c/c++.python一样,虽然我最常用的语言是python,但现在现在闲来无事,就写了这篇文章. 目录 Java入门基础 下 ...

  2. 【Java基础教程】(一)入门介绍篇 · 上:快速掌握核心概念,开启Java世界的探索之旅!这篇Java入门宝典助你翱翔~

    Java基础教程之入门介绍 · 上 本节学习目标 1️⃣ Java发展简史 1.1 诞生 1.2 发展 1.3 分支 2️⃣ 特征 3️⃣ 代码执行过程

  3. Java基础教程(12)--深入理解类

    一.方法的返回值   当我们在程序中调用方法时,虚拟机将会跳转到对应的方法中去执行.当以下几种情况发生时,虚拟机将会回到调用方法的语句并继续向下执行: 执行完方法中所有的语句: 遇到return语句: ...

  4. Java基础教程:注解

    Java基础教程:注解 本篇文章参考的相关资料链接: 维基百科:https://zh.wikipedia.org/wiki/Java%E6%B3%A8%E8%A7%A3 注解基础与高级应用:http: ...

  5. vue2+vue3小白零基础教程—vue2篇,全网2021最详细教程

    vue教程 提示:Vue3系列请参考Vue2+Vue3小白零基础教程-vue3篇文章,本文为vue2篇. 1. Vue核心 1.1 Vue简介 1.1.1 Vue是什么 一套用于构建用户界面的渐进式J ...

  6. java基础教程之实现一键分享朋友圈

     java最新技术,实现一键分享朋友圈,下面给大家演示一下 作为十余年java老司机,根据多年经验,自己录制的学习视频,我往对你们有所帮助, 有技术问题或者面试方面交流的可以加我微信renlliang ...

  7. Java基础教程-05-面向对象

    Java基础教程-05-面向对象 1. 面向过程和面向对象解释 1.1 面向过程 1.1.1 简述 我们回想一下, 前面我们完成一个需求的步骤是怎样的? 首先是搞清楚我们要做什么. 然后在分析怎么做. ...

  8. java 基础教程 ppt_java基础教程课件.ppt

    java基础教程课件 第三章 运算符,表达式和语句 3.1运算符与表达式 3.2 语句的概述 3.3 控制语句 3.4循环语句 3.5break 和continue语句 3.1运算符与表达式 3.1. ...

  9. Java基础教程:反射基础

    Java基础教程:反射基础 引入反射 反射是什么 能够动态分析类能力的程序称为反射. 反射是一种很强大且复杂的机制. Class类 在程序运行期间,Java运行时系统始终为所有对象维护一个被称为运行时 ...

最新文章

  1. php mysql 查询每隔一段时间插入的数据_SQL查询某个时间段共多少条数据
  2. boost::statechart模块实现终止测试
  3. python和perl哪个好_做为脚本语言来说perl和python那个更有优势?
  4. 计算机安全监控系统,关于计算机安全监控系统的关键技术
  5. 如何高效学习前端新知识,拓展视野,我推荐
  6. 快速接入阿里云应用配置管理工具 轻松开启企业效率新时代
  7. 关于微信投票微信投票神器及微信刷票软件免费版如何操作微信投票怎么免费刷票
  8. python金融数据分析与挖掘实战_[套装书]Python数据分析与挖掘实战(第2版)+Python金融大数据挖掘与分析全流程详解+Python金融数据分析(3册)...
  9. PS2022安装步骤 ps 2022(详细安装方法)
  10. java根据日期获得周月
  11. java 调用企查查API查询企业信息
  12. echarts中国地图飞线图demo
  13. linux make命令error2,make命令出错,求解释。
  14. 连续信号、离散信号、模拟信号与数字信号区别
  15. [实用电脑技术]Google Chrome谷歌浏览器下载完整离线安装版本
  16. 平面设计师怎么用栅格系统做好设计
  17. 微信公众号开通流量主
  18. iso体系认证有哪些?
  19. 度过有意义的生命--俞敏洪2009-06-02同济大学的演讲
  20. Oracle Linux 7.5 安装 Oracle 18C 单实例

热门文章

  1. 计算机窗口颜色不能自定义,用RBG颜色设置自定义颜色
  2. office软件的发展前景_办公软件未来趋势之七个演变
  3. background-size中,100%和cover的区别
  4. 王多鱼噩梦:MIT的机器狗学会守门了,拦截率87.5%,比顶尖运动员还高!
  5. 网页设计-第四次作业
  6. Python爬虫数据存储之TXT文本
  7. CodeMirror的认识和使用
  8. 浅谈云函数的代理IP利用面
  9. access令两列运算得到新属性_大学Access期末各章课后复习题
  10. 冲破服务机器人赛道“不可能三角”,科沃斯展现行业第一的统治力