美文网首页
Java中的二进制

Java中的二进制

作者: sydMobile | 来源:发表于2017-07-26 21:03 被阅读65次

文章最早发布于我的微信公众号中,欢迎关注公众号 Android_De_Home 获取更多干货资源。
本文为sydMobile原创文章,可以随意转载,但请务必注明出处!

在复习Java基本类型的时候突然遇到的问题
为什么byte型的数据表示的范围是 -128~127呢?我们都知道byte在Java中占一个字节,一个字节也就是八位,简单来说就是八个二进制(电脑只认识0,1 最终都是转化成二进制来识别的)在Java中最高位是用来表示正负数的,0代表正数,1代表负数。byte型的占八位数,有一位是符号位也就是说用来表示实际数大小的也就是7位,那么为什么不是
11111111 ~ 01111111 也就是(-127 ~ 127)呢?
其实在Java中负数不是这么表示的,并不是-127就是127化成二进制然后在前面加一个1表示负数。Java中表示负数是这样的,比如-127,他的负数的二进制的表示方法是 -127的绝对值 127,取127的二进制 01111111,然后取反得到 10000000,然后再加一得到 10000001,这才是-127的二进制表示方法。那么-128怎么来的呢,其实-128就是 10000000,这就是8位数的最小负数的,可以看出在二进制负数中第一位始终是1,然后面的数越大表示这个数越大,后面的数越小表示这个数越小
比如 11111111 表示的是-1,这就是负数中最大的数了,10000000表示-128,这个数最小,-127就是10000001 ,拿出第一位符号位,后面的数比较大小就可以比较出这两个数的大小
那么-129呢,按照负数二进制的方法,应该是129的二进制,10000001,然后取反01111110,然后加一,01111111,可以看到得到的结果最高位是0,0应该表示正数,当遇到这种情况就说明位数不够用了,它是负数应该主动在前面加1,也就是101111111,这个时候就是9位数了,就超出byte的范围了。128也一样,128二进可以制是 10000000, 看到最高一位是1,应该表示负数,可是128是正数,这个时候就要在前面加0,010000000表示128。

扫一扫关注微信公众号,获取更多干货和资源

相关文章

  • java基础|java中的二进制运算以使用场景

    本文知识点java中用二进制使用场景java中声明二进制数据java中拼接二进制数据二进制的使用场景做标识用二进制...

  • java基础|java中的二进制运算以使用场景

    本文知识点 java中用二进制使用场景java中声明二进制数据java中拼接二进制数据 二进制的使用场景做标识用 ...

  • Java基础系列-二进制操作

    原创文章,转载请标注出处:《Java基础系列-二进制操作》 概述 Java源码中涉及到大量的二进制操作,非常的复杂...

  • java的文件读写

    Java中如何以二进制字节的方式来处理文件,前面我们提到Java中有流的概念,以二进制方式读写的主要流有:❑ In...

  • Java中的二进制

    文章最早发布于我的微信公众号中,欢迎关注公众号 Android_De_Home 获取更多干货资源。本文为sydMo...

  • 十进制转二进制

    十进制转二进制 JAVA实现 一、toBinaryString()方法 利用Java自己封装的转换二进制静态方法直...

  • 工作笔记(八)

    java中byte[]和int互转 众所周知计算机中有二进制组成,byte有8位2进制组成,java中int由4位...

  • 偶数二进制位反转(Java)

    java中相关的位操作 二进制位反转思路 以下二进制位用8位做演示 a = 0000 0110 ; 十进制: 6...

  • 详解Java的序列化机制

    Java的序列号机制允许将对象转换成与平台无关的二进制流,从而实现对象保存到磁盘、在网络中传输等。Java中...

  • Java 序列化

    Java序列化是指把Java对象保存为二进制字节码的过程,Java反序列化是指把二进制码重新转换成Java对象的过...

网友评论

      本文标题:Java中的二进制

      本文链接:https://www.haomeiwen.com/subject/cxvikxtx.html