负数怎么存储

2020-08-19  本文已影响0人  chile1810

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

附录:位的运算符

& 与

| 或

^ 异或

~ 取反

<< 左移

>> 右移

上一篇 下一篇

猜你喜欢

热点阅读