计算机的编码基础
计算机中一个字节有8位,它表示的范围0000 0000
~1111 1111
。共有256个。那么如何利用这样的硬件基础来表示我们需要的数据范围呢?即我们需要如何编码呢?
在计算机系统中,数值一律用补码的形式表示和储存。原因在于,使用补码可以将符号位和数值域同意处理;同时,加法和减法可以统一处理。另外补码和原码的转换,运算过程是相同的,也就是无需其他的硬件电路即可转换。
补码的运算
正数求补码:
正数的补码就是其二进制表示,与原码相同。例如:数字5的补码是0000 0101
。同时原码也是0000 0101
。
负数求补码:
求负数的补码,首先需要求得负数对应正数的二进制表示,然后按位取反。之后整体结果再加1.即得到了负数的补码。例如:求数字-5的补码。首先得到+5的二进制表示:0000 0101
。然后按位取反可得1111 1010
。之后整体加1。即1111 1011
。便是-5的补码。
补码求源码:
有符号型的变量signed:可以表示-128 ~ 127
这256个数字。
无符号型的变量unsigned:可以表示0 ~ 255
这256个数字。
总结
- 补码的编码方式可以使得符号位直接参与运算,不需要单独标识。
- 正0、负0标识方法相同。无需区分
- 加法变减法,同时也适用于乘法和除法。