//
// 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;
}
/*
计算机有高电平和低电平:1和0
高级语言—->编译器—>机器语言
3+5 —> 0011+0101 执行效率又高到低
|
汇编语言
|
C语言 :简洁,执行效率高,健壮性强,面向过程的编程思想
|
Objective-C
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
*/