位扩展和位截断

来源:互联网 发布:内帐软件 编辑:程序博客网 时间:2024/05/03 20:31
         一个小规律, 2^n-2^(n-1) = 2^(n-1)  3^n-3^(n-1)=2*3^(n-1) 。

         位扩展其实很好理解,正数和0往前加零就够了,负数则是往前加一,不过注意位扩展往往都是隐形的,不知不觉就扩展了,比如 short i = 6; int j = i;  注意 位扩展 数值是不变的

         位截断,就是保留低k位二进制码, 比如把一个四位二进制码截断成三位,这不可避免的改变了原来的值,

         对于无符号数,B2U([X',X'',X''',X''''......]) MOD 2^k 就可以了。
         对于有符号数,U2T(B2U([x',x'',x''',x''''.....])mod 2^k)      

         注: B2U  二进制码解释为无符号数   U2T  无符号数编码解释为补码

0 0