当前位置:首页 » 编程语言 » c语言64位

c语言64位

发布时间: 2022-08-17 18:08:35

A. 用c语言实现大整形运算,64位长整型的加减法,输入限制为64位长度整数

#include<stdio.h>
#include<string.h>
#define N 1005
int main()
{
char str1[N],str2[N];
int num1[N],num2[N],t,len1,len2,i,j,max;
scanf("%d",&t);//测试t组数据,减法就不写了
getchar();
while(t--)
{
memset(str1,0,sizeof(str1));
memset(str1,0,sizeof(str2));
memset(num1,0,sizeof(num1));
memset(num2,0,sizeof(num2));
scanf("%s",str1);//输入第一个数,这个1000位整数相加也没问题,上面自己改长度
scanf("%s",str2);//输入第二个数,因为没有太长的数据类型,用字符串表示大整数
len1=strlen(str1);
len2=strlen(str2);
max=len1>len2?len1:len2;
j=0;
for(i=len1-1; i>=0; i--) //这里注意啊,倒着转换,但是num1是正向存每一位的
{
num1[j]=str1[i]-'0'; //转换成数字一个一个存到数组里面
j++;
}
j=0;
for(i=len2-1; i>=0; i--)
{
num2[j]=str2[i]-'0';
j++;
}
for(i=0; i<max; i++) //一位一位相加
{
num2[i]+=num1[i]; //加到num2数组中
if(num2[i]>=10) //大于10进位
{
num2[i]-=10;
num2[i+1]+=1;
}
}
if(num2[max]==1)
printf("%d",num2[max]);

for(i=max-1; i>=0; i--) //这样就把大整数的每一位算出来了,顺序输出就好
printf("%d",num2[i]);
printf("\n");
}
return 0;
}

B. C语言如何将64位整数转字符串

64位整数是指现实中64位的十进制的整数还是什么?如果是这样的,就是把现实中64位十进制的整数(因为在计算机中用二进制存储)转换为64个ASCII码显示在屏幕上。0的ASCII码是30,1的ASCII码是31,以此类推。先把整数(除一次之后就是所得的商)多次除以10取余(整数%10),把所得的余数+30赋值给char类型的变量,然后从尾至头连成字符串(或每得到一次余数就加到已定义的字符串中),就可以输出了(代码懒得写了)

C. C语言中,64位无符号整型如何进行开方运算

简单办法,转double, 再开方。
你的编译器要能全面支持64位无符号整型才行。例如支持 强制转化 unsigned _int64 为 double.

#include<stdio.h>
#include<math.h>

int main(void){
// unsigned _int64 x; // 我的编译器支持 支持unsigned
signed _int64 x;
double y;
printf("input x in hex 0x100:\n");
scanf("%I64x", &x); // 按16进制格式输入。
printf("x=%I64d\n", x); // 按10进制格式输出。
y = (double) x; // 我的编译器支持 signed _int64 转double, 不支持unsigned 转double
printf("y=%lf\n",sqrt(y)); // 开平方
return 0;
}
-----
scanf("%I64d", &x); // 按10进制格式输入。
============
实际上,double 只有 52 bits 精度,unsigned _int64 会有截断误差。
而 math.h 的sqrt 不支持 unsigned _int64。
也许可以自己编一个迭代 程序,假定 unsigned _int64 y 是平方根,用
(x - y * y ) 趋进 0 的方法 迭代 出 y -- 好像不难。达到 y 精度 为 1。

下面是设想,尚无时间验证:
#include<stdio.h>
#include<limits.h>
#include<math.h>
int main(void){
unsigned _int64 x,y,y1,y2;
signed _int64 xs;
double z;
printf("max signed _int64 is %I64x\n", _I64_MAX);
printf("max unsigned _int64 is %I64x\n", _UI64_MAX);
printf("input x in hex 0x100:\n");
scanf("%I64x", &x);
printf("x=%I64x\n", x);

if (x <= _I64_MAX){
xs = x;
z = (double) xs;
printf("y=%lf\n",sqrt(z));
} else {
for (y=0;y< 0xffffffff;y=y+0xff) {
if (y*y <= x) y1=y;
if (y * y > x) {y2=y; break;}
}
for (y=y1;y<=y2;y=y++) {
if (y*y <= x) y1=y;
if (y*y > x) {y2=y; break;}
}
printf("y1=%I64x y2=%I64x\n",y1,y2); // 输出
}
return 0;
}

输入数小于0x7fffffffffffffff 用 double
大于 0x7fffffffffffffff 用 y*y -x
输入输出 用 16 进制数。

D. 32位和64位系统,C语言中char,short,int,long,char*,int*,int**各占多少字节

1、在32位系统中:

char(1)字节

short(2)字节

int(2)字节

long(4)字节

char*(4)字节

int*(4)字节

int**(4)字节

2、在64位系统中:

char(1)字节

short(2)字节

int(4)字节

long(8)字节

char*(4)字节

int*(4)字节

int**(4)字节

(4)c语言64位扩展阅读

在C++中short占2字节,int、float、long都占4字节,double占8字节。

指针长度和地址总线有关。因为指针记录的就是一个地址,那么32位的就是4字节,64位的就是8字节。

char占1字节,short占2字节,int、float、long都占4字节,double占8字节,任意类型的指针都占4个字节。

E. C语言如何编译出64位的可执行文件

可以用dev-cpp 编译器(64位的版本),可以选择输出32或者64位的可执行文件。

F. 怎么设定64位数据类型,C语言的

根据编译器不同有以下两种格式:
定义:long long a;
格式符:%lld // 是两个 英文小写字母 'l'
定义:__int64 a; //前面是两个下划线
格式符:%I64d //大写字母 ' I '

比如:
long long a;
scanf("%lld",&a);

__int64 a;
scanf("%I64d",&a);

当然输出格式符也是一样的!

G. c语言中如何定义64位整数,希望路过的神牛指点

C语言中变量定义语句前面不能有非变量定义语句
C++则可以在需要的时候定义变量

if(n==0) return ;
int t,i;//C语言中这里定义变量是非法的,C++则是合法的

H. C语言在64位系统上怎样编辑运行

  1. C语言源程序的编译及运行的关键是在于编译器而不是系统平台。

  2. 在64位系统下,如果使用能够兼容32位的编译器,那么编译的程序就是32位的。当然,对于大多数32位编译器,都不能很好的在64位系统下运行。这个时候你就需要一个64位的编译器,比如微软的Visual C++ 2010及以上版本,下载的时候注意下载x64版本。使用64位编译器编译出来的程序就是64位的。

  3. 使用64位平台编译程序的时候需要注意一个问题:

    int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。作下比较
    (1)16位平台
    char 1个字节8位
    short 2个字节16位
    int 2个字节16位
    long 4个字节32位
    指针 2个字节
    (2)32位平台
    char 1个字节8位
    short 2个字节16位
    int 4个字节32位
    long 4个字节
    long long 8个字节
    指针 4个字节
    (3)64位平台
    char 1个字节
    short 2个字节
    int 4个字节
    long 8个字节(区别)
    long long 8个字节
    指针 8个字节(区别)


I. c语言,关于64位整数的引用问题

我估计是因为这个数据类型(_int64)在dev c里没有定义,你可以加一句定义来测:typedef long _int64 ,但在C里,long是占32位bit的,VC++和JAVA中的long占64位。标准数据类型里面是没有_int64这个数据类型的。
所以你改成这样,应该就不会有错了,但前提是dev c中long是占64位bit(运行一下sizeof(long)看他是不是等于8):
typedef long _int64;
_int64 a;
scanf("%I64d",&a);
printf("%I64d",a);

J. C语言中的64位(VC)

long long 是gnu C/C++中定义的类型,VC不支持
和它相对应的vc类型是__int64,只是输入输出没有g++方便

热点内容
android背单词源码 发布:2025-01-19 23:57:21 浏览:726
领动配置怎么样 发布:2025-01-19 23:56:35 浏览:82
python造数据 发布:2025-01-19 23:51:31 浏览:903
linux下卸载mysql 发布:2025-01-19 23:40:34 浏览:338
linuxweb路径 发布:2025-01-19 23:25:08 浏览:940
福建电信服务器ip地址 发布:2025-01-19 23:07:24 浏览:648
服务器怎么制作公告栏 发布:2025-01-19 23:06:23 浏览:873
英雄联盟皮肤源码 发布:2025-01-19 22:56:14 浏览:94
三星手机忘记解锁密码怎么办 发布:2025-01-19 22:45:43 浏览:291
Java为什么没有预编译命令 发布:2025-01-19 22:44:14 浏览:304