二进制负数用补码表示的原因
2010-10-21 08:14
260 查看
对于计算机或者DSP芯片来说,符号并没有什么特殊的储存方式,其实是和数字一起储存的。为了使得无论是无符号数还是符号数,都可以使用同样的加法减法规则,符号数中的负数用正数的补码表示。
假设CPU的字长是16位。我们都知道-1 + 1 =0,而0x0001表示1,那么-1用什么来表示才能使得-1 + 1 =0呢?答案很简单:0xffff,用16进制计算一下0xffff+0x0001,结果是0x10000。那么0x10000和0x0000等价麽,我们刚才说过用16比特来表达整数,最高位的1是第17位,这一位是溢出位,在运算寄存器中没有储存这一位,所以结果是低16位,也就是0x0000。这就是负数表示方式产生的原因。举个例子:-100。首先我们需要知道100的16进制,用计算器转换一下,可以知道是0x0064,那么-100就是0x10000 - 0x0064,用计算器算一下得0xff9c。还有一种简单的转换符号的方法,就是取反加一:把数x写成二进制格式,每位0变1,1变0,最后把结果加1就是-x了。
假设CPU的字长是16位。我们都知道-1 + 1 =0,而0x0001表示1,那么-1用什么来表示才能使得-1 + 1 =0呢?答案很简单:0xffff,用16进制计算一下0xffff+0x0001,结果是0x10000。那么0x10000和0x0000等价麽,我们刚才说过用16比特来表达整数,最高位的1是第17位,这一位是溢出位,在运算寄存器中没有储存这一位,所以结果是低16位,也就是0x0000。这就是负数表示方式产生的原因。举个例子:-100。首先我们需要知道100的16进制,用计算器转换一下,可以知道是0x0064,那么-100就是0x10000 - 0x0064,用计算器算一下得0xff9c。还有一种简单的转换符号的方法,就是取反加一:把数x写成二进制格式,每位0变1,1变0,最后把结果加1就是-x了。
相关文章推荐
- 二进制负数用补码表示的原因
- 剑指offer-二进制中1的个数,负数用补码表示
- 负数在计算机中的二进制表示(原码、反码与补码)
- 用补码表示负数而抛弃原码表示的原因
- 负数的二进制表示方法(正数:原码、负数:补码)
- 原码、反码、补码什么意思? 二进制、八进制、十六进制的负数表示?
- 负数的二进制表示方法
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- 看C语言编码转换----负数的二进制表示方法
- 原码,反码,补码---计算机中负数的表示
- 负数的二进制表示
- 复习负数的二进制表示方法
- 一个10进制数二进制表示1的个数,负数用补码
- Java中负数的二进制表示
- java实现输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- 负数的二进制表示方法
- 原码、反码、补码,计算机中负数的表示
- 负数的二进制表示方法
- 负数的二进制表示方法