在计算机操作系统实验:储存管理算法中有这么一句代码:s=(float)319*rand( )/32767/32767/2+1;

在计算机操作系统实验:储存管理算法中有这么一句代码 :

s=(float)319*rand( )/32767/32767/2+1;  

很多刚刚学的不知道其用法
而且网上也没有直白的针对的详细讲解
结合一下讨论和查找
来总结一下这句代码的意思,作用和为什么这么些?
希望能帮到大家。

首先我们看一下:
C语言int的取值范围
我们常常看到int取值范围为-32768~32767,实际上int的取值范围依赖于计算机系统,在16位机器中,int占16位,其中一位为符号位,所以取值范围为前面所说的-32768~32767(-215~215-1)。
而在32位和64位机器中,int占32位,取值范围为-2147483648~2147483647(-231~231-1)。ISO/ANSI C规定,int类型的最小范围为-32768到32767。
其它int类型的情况:
short int类型可能占用比int类型更少的存储空间,C保证short类型至少16位长,用于只需小数值的场合以节省空间。
long int 类型(或简写为long类型)可能占用比int类型更多的存储空间,C保证short类型至少32位长,用于使用大数值的场合。
long long int 类型(或简写为long long类型)可能占用比long类型更多的存储空间,C保证short类型至少64位长,用于使用更大数值的场合。
整型 int int 16位 -32768至+32767
无符号整型 unsigned int unsigned 16位 0 至 65,535
短整型 short int short 16位 -32768至+32767
无符号短整型 unsigned short int unsigned short 16位 0 至 65,535
长整型 long int long 32位 -2,147,483,648 至 2,147,483,647( -2^63 ~ 2^63-1)
无符号长整型 unsigned long int unsigned long 32位 0至4,294,967,295

是不是有点饶了?如果简单地查询一下可能各种情况都有
准确的说前面代码采用的是short int或者int int类型数据范围是:-32768到+32767
也就是说这里32767是最大的short int 或者 int int类型数据 也就是2的16次方减1
但是要除以的是2的32次方
只能分开除防止溢出,因为除数可取范围太小了
第一次除以32767第二次除以32767,最后除以2即可

猜你喜欢

转载自blog.csdn.net/m0_51684972/article/details/109208865