进制间转换

1.进制间转换
  十进制转二进制:十进制的数一直除以2,直到商为0,结果为逆序的每个余数。("除2取余,逆序排列"法,十进制转八、十六进制同理)

    16(10)→10000(2)

      


  十进制小数转二进制小数:小数一直乘以2,直到小数部分为0,结果为顺序的每个整数部分。("乘2取整,顺序排列"法)

    0.25(10)→0.01(2)

      0.25*2=0.5  取整是0    
      0.5*2=1.0    取整是1


  二进制转十进制:从右边第0位开始乘以2的位数次幂,二进制中为0的数忽略不计。

    101(2)→1*2^2+0+1*2^0=5(10)

  八进制转二进制转十进制(十六进制转二进制转十进制同理)

    3 4(8)

     ↓ 

    011 100(2)
     ↓

    28(10)

2.计算机存储空间是以8位1字节,内存以补码的形式存储。

    

3.关键字

  由字母、数字、下划线组成,不能数字开头。

4.类型转换

  显示转换:(int)a  (int)2.5→2      通常发生在高精转低精,损精。

  隐式(自动)转换:通常发生在低精转高精,赋值号右边类型将转换为左边类型;

                               同在赋值号右边将按高位看齐,char→int→unsigned→long→float→double(低→高精度转移)。

5.注意问题
(1)7%-4 → 3,-7%4 → -3
(2)负号的优先级高于减号。负号与自增、自减同在,优先级按右结合。
main()
{
 int i=8;
 printf("%d\n",++i);
 printf("%d\n",--i);
 printf("%d\n",i++);
 printf("%d\n",i--);
 printf("%d\n",-i++);
 printf("%d\n",-i--);
 printf("%d\n",i);
}
输出结果:9 8 8 9 -8 -9 8
i的初值为8
第二行i加1后故输出9
第三行i减1后故输出8
第四行输出i为8后再加1(为9)
第五行输出i为9后再减1(为8)
第六行输出-8后再加1(为9)
第七行输出-9后再减1(为8)
最后输出8
(3)j=5;q=(++j)+(++j)+(++j);→j=8,q=24
(4).
8进制:正负号开头,0为第一位
16进制:正负号开头,0x为前2位
(5) i+++j→(i++)+j
(6) x*=y+7→x=x*(y+7)

(7) int z = sizeof(float);

(8) printf("%0.0f\n",0.55f);   →  1(浮点类型的显示的最后一位会四舍五入)

posted @ 2013-12-15 20:11  forrHuen  阅读(255)  评论(0编辑  收藏  举报