关于进制
前言
世界上有10人 种人 ,认识和不认识二进制的。
所有数字在计算机底层都以 二进制形式存在。
1.四种表示方式
- 二进制(binary) :0,1 ,满2进1.以0b或0B开头。
- 十进制(decimal) :0-9 ,满10进1。
- 八进制(octal) :0-7 ,满8进1. 以数字0开头表示。
- 十六进制(hex) :0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。如:0x21AF +1= 0X21B0
2.原码、反码、补码
2.1.原码
直接将一个数值换成二进制数。最高位是符号位。
- 负数的原码,为其相反数的原码除符号位为1,其他都相同。
符号位,二进制的最高位,0:表示正数,1表示负数。
2.2.反码
正数的反码与原码一致,负数的反码是对原码按位取反,只是最高位(符号位)确定为1。
2.3.补码
正数的补码与原码一致,负数的补码是其反码+1。
计算机以二进制补码的形式保存所有的整数。
- 以十进制值1,转化为一个字节的二进制值为例:
十进制 | 原码 | 反码 | 补码 |
---|---|---|---|
1 | 0000 0001 | 0000 0001 | 0000 0001 |
-1 | 1000 0001 | 1111 1110 | 1111 1111 |
2.4.为什么要使用原码、反码、补码表示形式呢?
计算机辨别“符号位”显然会让计算机的基础电路设计变得十分复杂! 于是人们想出了将符号位也参与运算的方法. 我们知道, 根据运算法则减去一个正数等于加上一个负数, 即: 1-1 = 1 + (-1) = 0 , 所以机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了。
1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]补 + [1111 1111]补 = [0000 0000]补 = [0000 0000]原