二进制是机械语言,用0和1来表示数据,在机械上0表示低电平,1表示高电平。
十进制转二进制,一直除以二一直到余数为1或者0;末尾加D表示十进制
二进制转十进制,每一位都是2*2^(n-1),最后加起来。首位加0b,末尾加B表示二进制
十六进制,12345678abcdef,首位加0x,末尾加H表示十六进制。
二进制转十六进制,每四位二进制代表一个十六进制。
小数用二进制来表示:(1.34)D
小数位一直乘以2
0.34X2=0.68 0
0.68X2=1.36 1
一直到小数位为0,如果不能为0就一直去到自己想要的精度。
(0001.01)B
计算机中有源码,反码,补码,计算机用补码来储存数据
比如3的源码:0011
它的反码全部取反 1100如果是负数符号位不变
它的补码就是反码加1 1101
这是因为在二进制中,正数是从0开始算的,能表示128个数字是0-127,但是同时如果表示负整数的128位,就不能包含0了,因为在机械语言中不能一个数有两种表示方式。所以负整数整体向左移一位表示-1~-128。
C语言中是设有数据类型作为框架来放我们想放的数据
int 4bit/32位 整数类型字符
char 1bit/8位 有符号位
unchar 1bit/8位 无符号位
short int 2bit
long int 4bit
float 4bit单精度浮点数
double 8bit 双精度浮点数
其中float用二进制来表示,是1bit的符号位+8bit的指数位+23bit的尾数位
比如3.25用二进制表示 (0011.01)B,将小数点向左移到最左的1,移了几位再加上127(防止产生负数)那么指数位就是多少,那么指数位就是128~(1000 0000)B,1.101小数点后面就是尾数位凑够23位用0补充,最后得到的二进制就是,0010 0000 0101 0000 0000 0000 0000 0000;
double用二进制来表示,是1bit的符号位+11bit的指数位+52bit的尾数位
%m.nf 表示输出的无符号的浮点数宽度位m,小数点后n位
%d 表示输出有符号的int类型
%u 表示输出无符号的int类型
%e 以指数形式输出浮点数,如果输出的数是int类型则输出错误,比如float a=1000,输出1.000000e+03,如果是b=0.001,输出1.000000e-03.
%c 表示字符型
%s 表示字符串型
%x 无符号的16进制
%o 无符号的8进制