/*语言中进制表示 :    二进制表示 : 在二进制数字前面加上0b;    八进制表示 : 在八进制数字前面加上0;    十六进制表示 : 在十六进制前面加上0x;进制转换 ;    将其他进制转换成八进制 : 在printf函数中以%o占位;    将其他进制转换成十六进制 : 在printf函数中以%x占位;    在C语言中,没有占位符可将其他进制转换成二进制;    将其他进制转换成十进制 : 在printf函数中以%i或%d占位;进制转换的原理公式 : 假定m为一个十进制数,转换成nk,nk-1,nk-2,...,n2,n1,n0的l进制数                     则 m = n0 + n1 * l^1 + n2 * l^2 + .... + nk-2 * l^(k-2) + nk-1 * l ^(k-1) + nk * l^k                     由上可见,当等式左右两端同时除以l时,余项为n0,在整数部分除以l则余项为n1,以此类推,便可以得到m的l进制表达案例:十进制转换二进制(逆序打印)#include <stdio.h>void printBin(int num);int main(int argc, const char * argv[]) {       int num = 4; // 100;    printBin(num);    return 0;}void printBin(int num){    int zheng = num;    while (zheng != 0)    {        int yu = zheng % 2;        printf("%i",yu);        zheng = zheng / 2;    }    printf("\n");}n为二进制的取值范围 : 0~2^n -1二进制转八进制 : 三位变一位二进制转十六进制 : 四位变一位原码 反码 补码    数据内存中均是以补码形式存储,正数的原码,反码,补码全部一样,三码合一    原码 : 最高位为符号位(正数为0,负数为1),其他位则为数字位    反码 : 负数的反码,最高位符号位不变,数字位取反    补码 : 负数的补码,反码加1位运算符 :    按位与 : &    #数字转换成二进制后,对应位,全真则真,由此可见,任何数字和1的按位与还是数字本身    #注 : 可用此法结合移位运算进行进制转换    按位或 : |    #数字转换成二进制后,对应位上,一真则真,由此可见,任何数字和0的按位或还是数字本身    按位异或 : ^    #数字转换成二进制后,对应位上,相同则取0,不同则取1.相同的两个数字按位异或结果为0,且按位异或满足交换律    #应用 : 交换两个变量的值    取反 : ^    #取反操作,是直接对存储在内存中的补码进行取反,因此要获得数字本身,还需将其转换成原码之后,再计算    左移 : <<    #将二进制整体左移n位,缺位补0,相当于原来的数字乘以2^n    右移 : >>    #将二进制除了符号位之外整体右移n位,缺位按照符号位的取值进行补齐,相当于原来的数字乘以2^n        #注 : 左移或右移操作均是对补码进行操作案例一 : 交换变量的值    方法一 :       int num1 = 32;       int num2 = 21;       int temp = num1 + num2;       num1 = temp - num1;       num2 = temp - num1;    方法二 :        int num1 = 32;        int num2 = 21;        int temp = num1 ^ num2;        num1 = temp ^ num1;        num2 = temp ^ num1;案例二 : 进制转换 :    方法一(正序打印,完全按照其在内存的存储方式进行显示) :        void printBin(int num);        int num = 3;            printBin(num);        void printBin(int num)       {          int delta = 31;          for (int i = delta;i >= 0;i--)          {             int result = (num >> i) & 1;             printf("%i",result);                     if (i % 4 == 0)             {                 printf(" ");             }          }       printf("\n");       }    方法二(逆序打印) :        void printBin(int num);        int num = 3;            printBin(num);            void printBin(int num)            {                int delta = 0;                for(int i = delta;i < 32;i++)               {                    if (i % 4 == 0)                   {                       printf(" ");                   }                   int result = (num >> i) & 1;                   printf("%i",result);               }               printf("\n");            }            #以上两种方法的缺陷 : 当数字较少,会打印大量无用的0            方法三(改进) :             void printBin(int num);             int num = -4;             printBin(num);             void printBin(int num)            {                int count = 0 ;                while((num >> count) != 0)                {                     int result = (num >> count) & 1;                     printf("%i",result);                     count++;                }                printf("\n");           }*/