Alex刺客

Dancing fingers, damage world. -- 舞动手指,破坏世界.

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  57 随笔 :: 0 文章 :: 76 评论 :: 0 Trackbacks
    原码
 
    数值 X 的原码记为 [X]原,如果机器字长为 n (即采用 n 个二进制位表示数据),则最高位是符号位,0 表示正号,1 表示负号,基余的 n~1 位表示数值的绝对值。数值零的原码表示有两种形式:[+0]原=00000000,[-0]原=10000000。
 
        例:
        [+4]原 = 00000100
        [-4]原 = 10000100
        [+127]原 = 01111111
        [-127]原 = 11111111
 
    反码
 
    数值 X 的反码记作 [X]反,如果机器字长为 n,则最高位是符号位,0 表示正号,1 表示负号,正数的反码与原码相同,负数的反码则是其绝对值按位求反。数值0的反码表示有两种形式:[+0]反=00000000,[-0]反=11111111。
 
        例:
        [+4]反 = 00000100
        [-4]反 = 11111011
        [+127]反 = 01111111
        [-127]反 = 10000000
 
 
    补码
 
    数值 X 的补码记作 [X]补,如果机器字长为 n,则最高为符号位,0 表示正号,1 表示负号,正数的补码与其原码和反码相同,负数的补码则等于其反码的末尾加 1。在补码表示中,0 有唯一的编码:[+0]补=00000000, [-0]补=00000000。
 
        例:
        [+4]补 = 00000100
        [-4]补 = 11111100
        [+127]补 = 01111111
        [-127]补 = 10000001
 
    移码
 
    在数 X 上增加一个偏移量来定义的,常用于表示浮点数中的阶码。如果机器字长为 n,在偏移2^(n-1)的情况下,只要将补码的符号位取反便可获相应的移码。
 
        例:
        [+0]移 = 10000000
        [-0]移 = 10000000
        [+4]移 = 10000100
        [-4]移 = 01111100
        [+127]移 = 11111111
        [-127]移 = 00000001
 
总结:原码、反码、补码中最高位 0 表示正数,1 表示负数。负数的反码规则是符号位不变,绝对值位按位取反。负数的补码规则是符号位不变,绝对值位按位取反然后再加1。
posted on 2010-04-15 07:36 Alex刺客 阅读(730) 评论(0)  编辑  收藏 所属分类: CEIAEC

只有注册用户登录后才能发表评论。


网站导航: