20150525进制转换_Xcode

//

//  main.c

//  HelloWorld

//

//  Created by pengjunlong on 15/5/25.

//  Copyright (c) 2015 pengjunlong. All rights reserved.

//


/**


 ctrl + N : 切换光标到下一行;

 ctrl + P : 切换光标到上一行;

 ctrl + E : 切换到行尾;

 ctrl + A : 切换到行首;

 ctrl + F :向前移动一个字节

 ctrl + B :向后移动一个字节

 command + F :查找

 */

#include <stdio.h>


void tenToBinary();

void binaryToTen();

void printX();

int main(int arg, const char * argv[]) {


    for (int k=0; k<3; k++) {

       //tenToBinary();

    }

    printX();

    //binaryToTen();

    return 0;

}


/*

 计算机有高电平和低电平:10

 

 高级语言—->编译器—>机器语言

 3+5 —> 0011+0101        执行效率又高到低

 

 汇编语言

 

 C语言 :简洁,执行效率高,健壮性强,面向过程的编程思想

 

 ObjectiveC

 

 

 0B是二进制数的前缀

 123  0b1111011

 

 十进制转换成二进制:采用除2倒叙取余法;

 99 = 0b1100011

 99/2=49…………1

 49/2=24…………1

 24/2=12…………0

 12/2=6……………0

 6/2 =3……………0

 3/2 =1……………1

 1/2 =0……………1

 */


void tenToBinary()

{

    int num;

    printf("input a number:");

    scanf("%d",&num);

    int bin[32];

    int i = 0;

    while(num)

    {

        bin[i++] = num % 2;

        num/=2;

    }

    printf("0b");

    for(i--;i>=0;i--)

    {

        printf("%d",bin[i]);

    }

    printf("\n");

}


/*

 二进制转换成十进制:把每一位二进制代表的数值和相加

 0b110101 = 1*2^5 + 1*2^4 +1*2^2 + 1*2^0 = 53

 */

void binaryToTen()

{

    int bina[32];

    printf("input binary:");

    int i = 0;

    while (1) {

        scanf("%d",&bina[i]);

        if(bina[i]>1)

        {

            i--;

            break;

        }

        i++;

    }

    int tenData = 0;

    double y = 0;

    while (i>=0) {

        tenData +=bina[i--]*pow(2,y++);

    }

    printf("The result is %d",tenData);

    

}

/*

八进制:前缀是0,逢八进一

十进制: 8   9   10  15  16  63 64

八进制: 10  11  12  17  20  77 100

 d是打印十进制数的占位符

 o是打印八进制数的占位符

 */


/*

 八进制转换成二进制

 将八进制数的每一位分别用三位二进制数替换

 八进制:0    1    2    3    4    5    6    7

 二进制:000  001  010  011  100  101  110  111

 016  0b1110

 */


/*

 二进制转换成八进制:

 从低位开始,每三位一组,高位不足三位补0,每三位二进制数分别用一位八进制数替换

 0b 010 110 101 011 = 02453

*/


/*

 十六进制:逢十六进一,前缀是0x;

 十六进制转换成二进制:将十六进制数的每一位分别用四位二进制数替换;

 十六进制数:0     1      2     3     4     5     6     7     8     9     a/A   b/B   c/C   d/D   e/E   f/F

 二进制数  0000  0001   0010  0011  0100  0101  0110  0111  1000  1001  1010  1011  1100  1101  1110  1111

 %x是打印十六进制数的占位符

 

 二进制转换成十六进制:

 从低位开始,每四位一组,高位不足四位补0,每四位二进制数分别用一位十六进制数替换

 

 0b0001 0100 0110 1010 1101 0111 0101 = 0x146ad75

 0x12389a8f3c67d = 0b1001000111000100110101000111100111100011001111110

 */


void printX()

{

    printf("%d\n",0x20);

    printf("0x%x\n",120);

    short a;

    int b = 0x12345678;

    a = b;

    printf("%x\n",a);

    b = -0x12;  // 1000 0000 0001 0010-> 1111 1111 1110 1101+1-> 1111 1111 1110 1110

    a = b;

    printf("%x\n",a);

}



/*

 内存:存储数据信息的地方

 RAM  ROM

 bit(二进制位)

 1byte(字节)8bit

 1Kb = 1024byte

 1Mb = 1024Kb

 1Gb = 1024Mb

 1Tb = 1024Gb

 1Pb = 1024Tb

 */


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值