总览
数据类型
long double
如何用二进制表示一个小数
举一个栗子?:
比如说是10.7
整数位直接使用二进制表示是1010,这没什么好说的
小数位连续用2乘,得到的数大于1,输出1,且乘数更新为乘数-1;若得到的乘积小于1,输出0,乘数不变。
如小数部分为0.7
0.7 * 2 = 1.4 > 1 输出1 乘数 = 1.4 - 1 = 0.4
0.4 * 2 = 0.8 < 1 输出0 乘数 = 0.8
0.8 * 2 = 1.6 > 1 输出1 乘数 = 1.6 - 1 = 0.6
0.6 * 2 = 1.2 > 1 输出1 乘数 = 1.2 - 1 = 0.2
……
以此类推,循环越多,精度越高
因此,粗略来看 (10.7)10 = (1010.1011)2
以此可以看出,十进制小数转换为二进制是存在误差的
#include <iostream>
using namespace std;
int main()
{
char a = 'c';
printf("the ascii of %c is %d\n",a,a);
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int a = 137;
printf("%x\n%o\n",a,a);
}
短路
#include <iostream>
using namespace std;
int main()
{
char ans[100];
int i = 0, k, t;
char digit[] = "0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ";
long long n;
printf("输入要转换的十进制数字:\n");
scanf("%lld", &n); //标识符是ld
printf("输入进制: \n");
scanf("%d", &k);
while (n)
{
t = n % k;
n /= k;
ans[i++] = digit[t];
}
for (i -= 1; i >= 0; i--)
putchar(ans[i]);
putchar('\n');
return 0;
}
%#o || %#x的用法
#include <iostream>
using namespace std;
int main()
{
int a = 137;
printf("%#x\n%#o\n",a,a);
}
/*output:0x89
0211
*/补上本应有的符号表示
why 补码
位运算符应用实例
随机数
利用0~1范围来确定任意范围