1.为什么存在的进制
有二进制的原因是计算机最底层的电子元器件只有两种状态,高水平和低水平(有电和没电)。任何的数据在计算机中都是以二进制的数据存在。
八进制和十六进制是因为使用二进制表示同样的数值的时候太长不方便阅读和记忆。
2. 计算机中存储单位
- 8bit = 1byte
- 1024byte = 1kb
- 1024kb = 1mb
- 1024mb = 1gb
…
2.1 bit(比特)
一个比特是一个二进制位。例如001(二进制)就是三比特。
结合上面的说法,一个比特只能由两种状态,0和1,可以代表两种信号(高电平、低电平)
2.2 byte(字节)
因为bit能表示的状态范围很小,所以国际标准化组织规定8个bit为一组,作为数据的最小单元。
3. 不同进制的组成
- 二进制,在java中以0b开头
- 八进制,在java中以0开头
- 16进制,在java中以0x开头。
- 默认是10进制。
4. 不同进制转换
4.1 前提:
- 系数:每一个位上的数字(157,个位是7,十位是5,百位是1)
- 基数:几进制基数就是几
- 权:一个数据从右往左数,从0开始,对每一位数据进行编号,这个编号就是权。例如157的权就是210。
4.2 规律:
- 任意进制到十进制的转换就等于 这个数据的各个位上的系数乘以基数的权次幂。
例如 0b110 = (1*2^2) + ( 1 * 2 ^1) + 0 = 4+2 = 6
- 十进制转换其余进制,除基数取余数,直到商为0,余数反转。
100转换二进制?
100/2 = 50, 0
50 /2 = 25, 0
25/2 = 12, 1
12/2 =6 , 0
6/2 = 3, 0
3/2 = 1, 1
1/2 = 0, 1
结果是:1100100
4.3 8421码二进制-十进制快速进制转换
BCD码展示:
二进制 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
---|---|---|---|---|---|---|---|---|
十进制 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
例如:0b11011 = 1+2+0+8+16 = 27
5. 有符号数据表示法
5.1 什么是有符号数据?
数据有正负之分就是符号数,无正负之分就是无符号数。
例如:+7 -7就是有符号数据。
视频、图片是无符号数据。
5.2 有符号数的组成
符号位 + 数值位
通常二进制表现形式中的最高位就是符号位。
计算机中存储有符号数是按照补码的形式存进去的。
5.3 原码、反码、补码
- 正数的补码、反码、原码都一样。
- 复数的补码、反码、原码是不一样的。
- 原码:符号位 + 数据位
- 反码:除符号位不变,其他为全部取反0-1,1-0.
- 补码:反码的基础上加1就是补码。
例如:
原码: 0b10000000000000000000000000000111;//-7
反码: 0b11111111111111111111111111111000;
补码: 0b11111111111111111111111111111001;
补码才是-7在计算机中的存储形式。
原码与补码的关系: