在计算机操作系统实验:储存管理算法中有这么一句代码 :
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即可