1. 二进制基础
N进制转换十进制
计算机常用进制一般有二进制,八进制,十进制,十六进制,所谓进制,就是“逢N进一”。
二进制,逢二进一,数字中只有 0 和 1
例如数字1010对应十进制:12^3 02^2 121 0*0^0=10
八进制**,逢八进一,数字中**有0,1,2,3,4,5,6,7
例如八数字45转换十进制:48^1 58^0=37
十六进制,逢16进一,数字中有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
例如十六进制数字45转换十进制:416^1 516^0=69
二进制与八进制互转
二进制转换成八进制的方法是,取三合一法
例如:10101001对应八进制:(010)(101)(001)=251
八进制转为二进制,方法是一分三
例如:345对应二进制:345=(011)(100)(101)
二进制与十六进制互转
二进制转换成十六进制的方法是,取四合一法
例如:10101001对应十六进制:(1010)(1001)=A9
十六进制转为二进制,方法是一分四
例如:1F02对应十六进制:1F02=(0001)(1111)(0000)(0010)
十进制转二进制
用2整除十进制整数,得到一个商和余数;再用2去除商,又会得到一个商和余数,如此重复,直到商为小于1时为止,每一位取余,最后倒叙.
例如:45对应二进制:
45/2=1,22/2=0,11/2=1,5/2=1,2/2=0,1/2=1 最后=101101
比较法:512,256,128,64,32,16,8,4,2,1 这个序是对应的二进制次方
例如:173对应为二进制:
从左至右依次开始,173比128大取1,(173-128)=45,45比64小取0,45比32大取1,(45-32)=13,13比16小取0,比8大取1,(13-8)=5,5比4大取1,(5-4)=1,1比2小取0,1比1取1,最后=10101101
小数部份转换
十进制的小数转换为二进制,主要是小数部分乘以2,取整数部分依次从左往右放在小数点后,直至小数点后为0
小数转二进制
0.125=0.1252=0.25取0,0.252=0.5取0,0.5*2=1取1=最终二进制为0.001
以下是0.3转成二进制的过程,
取8位小数的话0.3 =0.01001100,这是一个无限循环的数
内存中的位,字节,字
计算机中的内存是以位为最小存储单位的。通过对内存进行组织,可以引用特定的位集合。把计算机的内存起始位编号为1,每隔8位编号增1,也就是以字节为单位,每隔一个字节编号向上加一,可以对计算机所有内存进行编号。
2. 数据类型概述C语言规定,在程序中使用的每一个数据,必须指定其数据类型。
不同类型,占用空间不同
sizeof是C语言的一种单目操作符,如C语言的其他操作符 、--等。
sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。
#include<stdio.h>
void main() {
printf("%d\n",sizeof(char));//1
printf("%d\n", sizeof(short));//1
printf("%d\n", sizeof(int));//4
printf("%d\n", sizeof(unsigned int));//4
printf("%d\n", sizeof(double));//8
getchar();
}
#include<stdio.h>
#include<limits.h>//极限头文件
void main() {
printf("%d,%d\n", INT_MAX,INT_MIN);
printf("%u,%u", UINT_MAX, 0);
getchar();
}