c语言数字前缀与后缀
c语言数字前缀与后缀
前缀
0: 八进制 0x: 十六进制 0b: 二进制
注意:这里的前缀是0(零)不是o
十进制不需要前缀,15=0xf=017=0b1111
#include <stdio.h>
int main()
{
printf("%x ",0b101);//%x:16进制输出,0b前缀:二进制数字
printf("%o ",0101); //%o:八进制输出, 0前缀:八进制数字
printf("%d",0x10);//0x前缀:16进制数字
return 0;
}
进制转化原理:
二进制转化16进制:每四位二进制数=一个16进制位;
二进制转化10进制:整数就从右到左依次乘以2的次方,其中首位为1是负,为0是正数。
双精度浮点数(10进制)转化为2进制:
//小数转二进制
//
//采用"乘2取整,顺序排列"法:
//
//1.用2乘十进制小数,可以得到积,将积的整数部分取出
//2.再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出
//3.重复操作,直到积中的小数部分为零,此时0或1为二进制的最后一位,或者达到所要求的精度为止
//
//例如将0.125转换为二进制:
//
//0.125 * 2 = 0.25 ------0
//
//0.25 * 2 = 0.5 ------0
//
//0.5 * 2 = 1.0 ------1
//
//当小数部分为0就可以停止乘2了,然后正序排序就构成了二进制的小数部分:0.001
//
//如果小数的整数部分有大于0的整数时,将整数部分和小数部分先单独转为二进制,再合在一起就可以了,例如:
//
//假设要将8.125 转换为二进制
//
//现将8转为二进制:得到1000
//再将0.125转为二进制:得到0.001
//
//合并后为1000.001
二进制转化为8进制:3位二进制数=一位八进制数
后缀
1
数值后面加“L”和“l”的意义是该数值是long型, 详细说明如下: 5L的数据类型为long int。 5.12L的数据类型为long double。
2
数值后面加“U”和“u”的意义是该数值是unsigned型。后缀字母大小写都可以, U与L可以组合使用(100UL)
3
后缀是F, 表示float, 但是F不可以和U组合, 因为浮点数没有unsigned。在C语言中,如1.8这样的数字。如果加以提前声明,如float num=1.8,会被认为是float类型;如果不加以声明,则被默认为double。因此需要在数字后加上f,以表示该数字类型为float。
4
数值后面加“”H“、“h”的意义是该数值是用16进制表示的。 数值后面加“”B“、“b”的意义是该数值是用2进制表示的。