十进制转正整数转二进制应该都会,用C语言代码简单表示算法:
1 |
|
当然也有另外一种简单转换方法:
1 |
|
但是,十进制负整数转换为二进制稍微复杂一些,分为三步:
一、原码
例如一个十进制数 5,二进制原码表示为:
00000000 00000000 00000000 00000101
大小为 4 字节,每一个 0
或 1
表示一个比特位(bit),所以八位为一字节,好像32位和64位系统都这样。一字节用十进制整数表示大小则是:2的8次方(256)。
表示为十六进制是这样:ff ff ff ff
(f=2^4-1)
二、反码
将二进制原码每一位取反,就是 0
变 1
,1
变 0
。
上面 5 的反码表示为这样:
11111111 11111111 11111111 11111010
三、补码
将反码最低位加 1
叫做补码,那么 5 的补码表示为:
11111111 11111111 11111111 11111011
注意反码末位是 1
时记得进位。
所以十进制数 -5
的二进制表示为:
11111111 11111111 11111111 11111011
所以 -1 在计算机中表示为全 1
,就是:
11111111 11111111 11111111 11111111
我64位计算机中是这样的: