负数怎么存储

1 Java byte类型

byte占用1个字节,8位,第一位是符号位:0表示正数。1表示负数。表示范围 -128~127。

2 为什么要用补码存储

2.1 如果负数用原码表示

编码举例

 127:0111 1111

     2:0000 0010

     1:0000 0001

     0:0000 0000

   -0:1000 0000

    -1:1000 0001

    -2 :1000 0010

  -127:1111 1111

存在问题

1、有两个零表示,浪费1个存储,且有歧义。

2、负数的表示可读性较好,但是对计算机不友好,无法直接使用位运算的加法。加法处理需要区分正数和负数两个分支。

2.2 如果负数用反码表示

反码的定义:按位取反

编码举例

 127:0111 1111

     2:0000 0010

     1:0000 0001

     0:0000 0000

   -0:1111 1111

    -1:1111 1110

    -2 :1111 1101

  -127:1111 1111

存在问题

1、有两个零表示

2.3 如果负数用补码表示

补码的定义:按位取反然后加1

编码举例

 127:0111 1111

     2:0000 0010

     1:0000 0001

     0:0000 0000

   -0:1111 1111

    -1:1111 1111

    -2 :1111 1110

   -127:1000 0001

  -128:1000 0000

附录:位的运算符

& 与

| 或

^ 异或

~ 取反

<< 左移

>> 右移

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容