机器数

定义

连同数字和符号在一起的二进制数称为机器数,由机器数表示的实际值称为真值

原码

定义

一般一个字节是八个二进制位,对于机器数则有第一个二进制位是符号位,从第二个开始到最后一个二进制位则是表示数据的大小,即最大表示范围为-127 ~ 127,即最大数是01111111,最小数为11111111

其中第一个符号位是 1 则代表该数是一个负数,0 则是一个正数

原码表示(举例)

C语言中可以理解为一个八位二进制数

1
2
[+78] = 01001110
[-78] = 11001110

反码

定义

正数的反码与原码相同,负数从第二位开始按位取反(二进制下)

特殊

同时任意一个数的反码的反码即是原码本身

零的反码表示有两种:

1
2
[+0] = 00000000
[-0] = 11111111

反码表示(举例)

C语言中可以理解为一个八位二进制数的后七位进行位运算中的取反(~

1
2
[+78] = 01001110
[-78] = 10110001

补码

定义

正数补码与原码相同,负数补码是对该数除符号位以外的各位取反,最末位加一。

特殊

任意数的补码的补码即原码本身,所以已知一个数的补码,求原码的操作其实就是对该补码再求补码。

零的补码唯一

1
2
[+0] = 00000000
[-0] = 00000000

补码表示(举例)

C语言中可以理解为一个八位二进制数的后七位进行位运算中的取反(~),同时对其第八位二进制数加一,第八位二进制数如果为 1 则进位处理

1
2
[+78] = 01001110
[-78] = 10110010


机器数
https://equinox-shame.github.io/2022/03/14/机器数/
作者
梓曰
发布于
2022年3月14日
许可协议