本帖最后由 刘艳伟 于 2012-11-15 18:45 编辑
当将整型数据采用二进制表示时,正数用原码表示,负数用补码表示。最高位(左边的第一位)是符号位,用来区分正数或负数,正数使用原码表示,最高位是0,负数用补码表示,最高位是1。
如8的原码为:0000-0000 0000-0000 0000-0000 0000-1000
负数的补码有两种求取方法:
第一种:对其原码逐位取反(除符号位外),然后整个数加1
示例:
如求取-8的补码:
1、得到-8的原码:1000-0000 0000-0000 0000-0000 0000-1000
2、除符号位外逐位取反:1111-1111 1111-1111 1111-1111 1111-0111
3、加1既得-8的补码:1111-1111 1111-1111 1111-1111 1111-1000
第二种:求出绝对值比其小1的数的原码,然后逐位取反既得
示例:
如求取-8的补码:
1、比-8绝对值小1的数为7
2、7的原码为:0000-0000 0000-0000 0000-0000 0000-0111
3、将其逐位取反既得-8的补码:1111-1111 1111-1111 1111-1111 1111-1000
第三种:求出正数原码,将右边第一个1左边的所有位取反
示例:
如求-8的补码:
1、求出8的原码:0000-0000 0000-0000 0000-0000 0000-1000
2、从右边找到第一个1,将1左边的所有位取反,既得-8的补码:1111-1111 1111-1111 1111-1111 1111-1000
|