程序员必须了解的计算机基础

1 计算计中的数据与二进制

1.1 数据

计算机中的数据总是以二元状态存在的,通常用0或1两种符号来表示,它也方便用于表示电路中的高低电平。

1.2 二进制

在计算机中是用二进制来表示数据的。二进制中1=1,2=10,4=100,8=1000。生活中,我们用得比较多的就是10进制,那么要怎么把10进制与2进制进行转换呢?
程序员必须了解的计算机基础

程序员必须了解的计算机基础

2 原码、反码和补码

在计算机中,最小的单位是位(bit),也就是二进制中的每一个数值,最小的数据存储单位是字节(byte)。一个字节由8位组成,这8位中最左侧的一位是符号位,0表示正数,1表示负数。

2.1 原码

原码就是数据的实际值,如1的原码为 0000 0001,-2的原码为1000 0010,0的原码为0000 0000。8位二进制数能表示的最大范围是[-127,127]。

2.2 反码

正数的反码是原码本身,负数的反码是在原码的基础上,符号位不变,其余位取反,如1的原码是0000 0001,反码也是0000 0001;-2的原码为1000 0010,反码为1111 1101。8位二进制数能表示的最大范围是[-127,127]。

2.3 补码

正数的补码是原码本身,负数的补码是原码的基础上符号位不变,其余位取反然后加1。8位二进制数能表示的最大范围是[-128,127]。
【注:0的原码、反码、补码是同一个!】

2.4 计算计中补码参与运算

1 + (-2) = -1,对应的原码为 0000 0001 + 1000 0010 = 1000 0011 = -3, 这是不正确的。
对应的反码为 0000 0001 + 1111 1101 = 1111 1110,转换成原码 1000 0001=-1,正确。
如果 1-1用反码计算的话,0000 0001 + 1111 1110 = 1111 1111,转换成原码就是1000 0000 = -0,是错误的表示。
所以如果用补码来计算0000 0001 + 1111 1111 = 0000 0000,对应的原码也是0000 0000=0,正确。在补码中1000 0000表示-128。

-35 + -128用补码参与运算结果是多少?
程序员必须了解的计算机基础

相关文章: