Java编程的逻辑阅读总结(五)

整数的二进制表示及加减运算

  • 正整数的二进制

我们最熟悉的是十进制,例如 131,它实际的含义其实是 1 x 10^2 + 3 x 10^1 + 1 x 10^0

从右到左每个位置都有一个位权,从1开始

在十进制中每个位置都能有0-9中的十个里的一个 来表示,但是在二进制中只有0或者1两个数,位权从右到左依次为1,2,4,8等

例如 2 的二进制为 10 ,10 的二进制为1010

  • 负整数的二进制

负数的二进制表示就是其对应正数的补码表示

整数有四种类型 , byte,short,int,long 分别占 1,2,4,8个字节,分别占8,16,32,64位

在二进制中最高位表示符号位, 0 表示正数,1 表示负数

例如 byte i = -10; 对应二进制应该为 11110110,第一反映即然符号位为1那么为什么不是10001010呢?

这就涉及到了计算机中的三种表示法,三种表示方法均有符号位和数值位两部分

下面以byte i = -10 举例

  • 原码 : 第一位为符号位 10001010
  • 反码 : 正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 即 11110101
  • 补码 : 在期正数原码的基础上取反然后加1 ,整数原码 00001010 取反 11110101 加1:11110110,正数的补码与原码相同

计算机只能进行 + 运算 计算 1- 1 的时候实际是 1+ (-1),在计算机系统中,数值一律用补码来表示和存储。

例如 1-1 实际是 1 + (-1)

1 -> 00000001

+

-1 -> 11111111

= 000000000

进位与十进制数类似但是是逢2进一位

想一起交流或者有问题的朋友可以关注我的公众号,里面有群聊连接可以一起交流遇到的问题,如果失效可以后台回复我,每天会同步更新
博客连接 : AshinLee’s blog

公众号:
这里写图片描述

阅读更多

扫码向博主提问

GeekLee.

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • Java
去开通我的Chat快问
换一批

没有更多推荐了,返回首页