二进制详解
目录
- 二进制和进制转换
- 原码、反码、补码
1. 二进制和进制转换
2进制、 8进制、 10进制、 16进制是数值的不同表示形式。
比如:数值15的各种进制的表示形式:
- 15的
2进制:1111 - 15的
8进制:017 - 15的
10进制:15 - 15的
16进制:0xF
1.1 进制介绍
10进制 :
- 10进制中满10进1
- 10进制的数字每一位都是0~9的数字组成
2进制:
- 2进制中满2进1
- 2进制的数字每一位都是0~1的数字组成
8进制 :
- 8进制中满8进1
- 8进制的数字每一位都是0~7的数字组成
- 8进制前需要加上0
16进制 :
- 16进制中满16进1
- 10进制的数字每一位都是09,af(A~F)的数字组成
- 16进制前需要加上0x
1.2 2进制转10进制
在10进制中,123表示的值是一百二十三。
10进制的每一位是权重的,10进制的数字从右向左是个位、十位、百位…,分别每一位的权重是100,101,10^2。
如下图:

2进制和10进制是类似的,只不过2进制的每一位的权重,从右向左是:20,21,2^2……
如果是2进制的1101,该怎么理解呢?

1.3 10进制转2进制
10进制除以2所得余数倒序相加。

1.4 2进制转8进制
8进制的数字每一位是07的,**07的数字,各自写成2进制,最多有3个2进制位**,比如7的二进制是111,所以在2进制转8进制数的时候,从2进制序列中右边第一位开始,向左每3个2进制位会换算一个8进制位,剩余不够3个2进制位的直接换算。

如:2进制的01101011,换成8进制:0153
8进制表示的时候前面加0。
1.5 2进制转16进制
16进制的数字每一位是0~9、a ~f 的,0~9、a ~f的数字,各自写成2进制,最多有4个2进制位,比如 f 的二进制是1111,所以在2进制转16进制数的时候,从2进制序列中右边第一位开始,向左每4个2进制位会换算一个16进制位,剩余不够4个二进制位的直接换算。
如:2进制的01101011,换成16进制:0x6b。
16进制表示的时候前面加0x。

2. 原码、反码、补码
整数的2进制表示方法有三种,即原码、反码和补码
有符号整数的三种表示方法均有符号位和数值位两部分:2进制序列中,最高位的1位是被当做符号位,剩余的都是数值位。
符号位都是用0表示“正”,用1表示“负”。
正整数的原、反、补码都相同。
负整数的三种表示方法各不相同。
无符号整数只有数值位。
- 原码:直接将数值按照正负数的形式翻译成二进制得到的就是原码。
- 反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。
- 补码:反码+1就得到补码。
反码得到原码也是可以使用:取反,+1的操作。
对于整形来说:数据存放内存中其实存放的是补码。
在计算机系统中,数值一律用补码来表示和存储。
原因在于:
-
使用补码,可以将符号位和数值域统⼀处理
-
加法和减法也可以统⼀处理(CPU只有加法器)
-
补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
6968

被折叠的 条评论
为什么被折叠?



