# 简答1
## 0与1
Java中定义的基本类型
### 原码、反码、补码
我们已经知道了一个 int 型数值是 4 个字节。每个字节有 8 位。但对于一个 int 或者其它整数类型如 (long)的数值而言还要注意的是,它的最高位是符号位。
* 最高位为0表示正数。
* 最高位为1表示负数
#### 原码
将一个数字转换成二进制,就是这个数值的原码
```java
int a = 5; //原码 0000 0000 0000 0101
int b = -3; //原码 1000 0000 0000 0011
```
#### 反码
分两种情况:正数和负数
* 正数 正数的反码就是原码。
* 负数 负数的反码是在原码的基础上,符号位不变 其它位都取反。
```java
5 的原码:0000 0000 0000 0101
-3 的原码:1000 0000 0000 0011
-3 的反码:1111 1111 1111 1100
```
#### 补码
仍然分正数和负数两种情况
* 正数 正数的补码就是原码。
* 负数 负数的补码在反码的基础上加1。
```java
5 的补码:0000 0000 0000 0101
-3 的反码:1111 1111 1111 1100
-3 的补码: 1111 1111 1111 1101
```
**计算机在进行数值运算的时候,是通过补码表示每个数值的。**
```bash
5 - 3 = 5 + ( -3 )
相当于
0000 0000 0000 0101
+ 1111 1111 1111 1101
= 1 0000 0000 0000 0010
```
![](http://ww1.sinaimg.cn/large/005Ogmrtly1g1v8za0wubj30ug072t8u.jpg)
### 位运算符号
位运算符包含与运算符(&)、或运算符(|)、取反运算符(~)、异或运算符(^)、左移运算符(>>)和右移运算符(<<)。
> 需要注意的是,下面测试用的数据都是 int 类型,int 类型是 4 个字节长度,但是为了方便说明示例中用的数值我都用 1 个字节表示。希望不会给大家造成困扰。
#### & 与
规则:**都为1,则1,否则为0**.
```java
0 & 0 = 0,
0 & 1 = 0,
1 & 1 = 1
```
#### | 或
规则:**都为0,则0,否则为1**.
```java
0 | 0 = 0,
0 | 1 = 1,
1 | 1 = 1
```
#### ~ 取反
规则:**对每一位取反, 1变成 0,0 变成 1**.
```java
~5 => 0000 0101 ~ => 1111 1010
```
#### ^ 异或
规则:**每一位上,如果数值相同为0,不同为1**.
```java
1 ^ 0 = 1,
1 ^ 1 = 0,
0 ^ 0 = 0;
```
#### << 左移
规则 **a << b 将数值 a 的二进制数值从 0 位算起到第 b - 1 位,整体向左方向移动 b 位,符号位不变,低位空出来的位补数值 0**。
```java
5 << 1 ===> 1000 0000 0000 0101 << 1 = 1000 0000 0000 1010 = 10
```
#### >> 右移
规则:**a >> b 将数值 a 的二进制数值从 0 位算起到第 b - 1 位,整体向右方向移动 b 位,符号位不变,高位空出来的位补数值 0**。
```java
5 >> 1 ===> 1000 0000 0000 0101 >> 1 = 1000 0000 0000 0010 = 2
```
也就是说 a >> b = a / ( 2 ^ b )
#### >>> 无符号位右移
连同符号位,一起右移
### 科学计数法
- 计算机基础
- 简答1
- 简答2
- 专案
- 浅谈0与1
- 浅谈TCP_IP
- 浅谈HTTP
- 浅谈HTTPS
- 数据结构与算法
- 常见数据结构简介
- 常用算法分析
- 常见排序算法
- Java数据结构类问题简答
- 专案
- HashMap
- 浅谈二叉树
- 算法题
- 算法001_TopN问题
- 算法002_汉诺塔
- 编程思想
- 杂说
- 观点_优秀程序设计的18大原则
- 设计模式_创建型
- 1_
- 2_
- 设计模式_结构型
- 1_
- 2_
- 设计模式_行为型
- 1_
- 2_
- Java相关
- 简答1
- 简答2
- 专案
- 浅谈String
- 浅谈Java泛型
- 浅谈Java异常
- 浅谈动态代理
- 浅谈AOP编程
- 浅谈ThreadLocal
- 浅谈Volatile
- 浅谈内存模型
- 浅谈类加载
- 专案_数据结构
- 浅谈SpareArray
- Android相关
- Android面试题
- 专案
- 推送原理解析
- Lint
- 自定义Lint
- Lint使用
- 优化案
- Apk体积优化
- Kotlin相关
- 简答1
- 简答2
- 三方框架相
- Okhttp3源码分析
- ButterKnife源码分析
- Glide4源码分析
- Retrofit源码分析
- RxJava源码分析
- ARouter源码分析
- LeakCanary源码分析
- WMRouter源码分析
- 跨平台相关
- ReactNative
- Flutter
- Hybrid
- 优质源
- 资讯源
- 组件源
- 推荐