⑴ 在c语言中,int类型存储的最大的数是2^32,为什么为什么不是2^31
C语言中的int型在不同的机器上位数不同,其表示的数范围也不同。鄙人假设你说的int型是32位。
C中的int型使用补码表示,也就是32位补码,最高位为符号位,1代表负,0代表正。一个int型变量存储形式为x = { 符号位(1bit), 数值位(31bit) }。
一个int型变量最大值即32bit补码能表示的正数最大值。1bit符号位为0,31bit数值位,每位可以有{0, 1}两种组合,31位可以有2^31种组合,最大正数即数值位全为1时能取到:
二进制(0;111,1111,1111,1111,1111,1111,1111,1111) = 7FFFFFFFH,按等比数列计算结果为 2^0 + 2^1 + 2^2 + ... + 2^30 = [1*(1-2^31)] / (1-2) = 2^31 - 1。
综上所述,32bit的int型表示的最大正整数既不是2^32,也不是2^31,是(2^31 - 1) = 2,147,483,648,大约21亿。
⑵ c语言要输入输出一个32位的数字~ 用什么类型的数据 输出时 % 什么
那就需要看看你的sizeof(int)等于多少了,如果结果为4,那么就是int就足够拉,打印时为%d;
如果是sizeof(long) == 4,那么就使用long,打印%ld
====================================================
哈哈,你所谓的32位原来是这个意思啊;
如果是相当大的数字,那么需要自行编码实现特殊的数据类型了,可以用字符串/链表之类的模仿,打印输出也是特殊定制的
⑶ C语言的数组最大可以定义多长,求高手解答,请不要很笼统说是系统内存什么的还是硬件限制,麻烦详细解释一
数组只是一个语法概念,可以认为你是要分配一段连续的内存,在应用层有2种方式:
全局变量的方式,在函数外声明,最大应该不能超过4GByte(32bit寻址最大值),int就除与4,doubel再除2
局部变量的方式,在函数内声明,属于栈内存,就更小,确实跟操作系统和C库相关,进程都有栈限制的,可以输入命令ulimit查看,默认也就10K左右,当然你可以设置更大。
不会有数专门说这个数组大小的问题,它涉及的知识点会,栈内存,data段,以这些为关键字去看,整理理解吧。
⑷ C语言 读入32bit长度数据,最高位为1时,发现读进来的数据与源数据不同。
声明一个 unsigned int 类型的变量,读入的数据的最高位为有效位,而不是符号位。
⑸ c语言中32-bit是什么意思
32bit指的是CPU一次能处理的最大位数是32位
即32位处理器每次处理 4Byte(32bit)
⑹ c语言如何表示超过32位的数
1、编译器不同导致使用64位的申明方式不同;
2、long long / unsigned long long 一般是Linux下申明方式、如:G++
3、__int64 /unsigned __int64一般是Windows下使用64位的申明方式,如:VS
4、在赋值时需要注意加上ll进行显式赋值;
5、当进行64位与 32位的混合运算时,32位整数会被隐式转换成64位整数。
6、输出printf("");,long long使用%lld输出,__int64使用%I64d,无符号使用u替代d即可
⑺ C语言中超过32位的变量怎么定义
可以利用c语言扩展特性定义结构体如下
struct
{
int
bit0:1;
int
bit1:1;
...
}
bitblock;
引用
bitblock.bit0
⑻ c语言 int最大值是多少
c语言中,int最大值是2147483647。
c语言中,int、long int 、unsigend long int都是4个字节,其可以用sizeof()函数得出。占用4个字节的整数其最大能表示数的个数是2^32(4个字节共32位)。
int、long int都是带符号整数类型,因此它们能表示的整数范围为-2147483648~2147483647,也就是-2^31~2^31-1。unsigend long int是无符号整数类型,能表示的整数范围是0~4294967295,即0~2^32-1。
同理,short int是2个字节的带符号整数类型,能表示的整数范围是0~65535,即0~2^16-1。
(8)c语言编出32bit最大值扩展阅读:
C语言中,float数据类型的表示范围:
float为单精度浮点数,占4字节,其数值范围为3.4E-38 ~3.4E+38或者-(3.4E-38 ~3.4E+38)。float的指数位有8位,尾数位有23位,符号位1位。于是,float的指数范围为-127~+128,按补码的形式来划分。
⑼ C语言问题!!!编写一个程序,找出32位中最大和最小的数,这个代码要怎么写
#include<stdio.h>
#define N 32 //数组的大小
int main()
{
int a[N]={1,2,3,6,9,8,5,4,6,7,2,0,1,3,5,565,51,3,1,1,3,13,1,13,13,1,3,31,13,13,31,3,0};
int i=0;
int max=a[0],min=a[0];
for(i=0;i<N;i++)
{
if(max<a[i]) max=a[i];
if(min>a[i]) min=a[i];
}
printf("max=%d, min=%d\n",max,min);
}
示例程序如上。
⑽ c语言求最大值怎么写
temp=(((a[0]>a[1])?a[0]:a[1])>a[2]?:((a[0]>a[1])?a[0]:a[1]):a[2]);
temp就是最大值
不好意思,上面那个多谢了一个冒号,当时没有验证就直接写了,现在已经验证完毕:
具体代码:
#include
int
main()
{
int
a[3];
a[0]=1;
a[2]=3;
a[1]=2;
int
temp=(((a[0]>a[1])?a[0]:a[1])>a[2]?((a[0]>a[1])?a[0]:a[1]):a[2]);
printf("%d",temp);
return
0;
}