原码、反码、补码转换。short、int、long类型有无符号位输出

本文探讨了在Windows环境下,使用Visual C++ 6.0编译器,关于short、int、long类型的有符号和无符号数值在原码、反码、补码转换中的表现。详细分析了不同数值在二进制和十六进制下的变化,并解释了数据溢出的情况。
摘要由CSDN通过智能技术生成

short、int、long类型有符号位输出和无符号位输出的数值问题
原码、反码、补码转换
系统:windows 32/windows 64
软件:Visual C++ 6.0

#include<stdio.h>
void main()
{
    printf("                  类型 = 字节数\n");
    printf("         sizeof(short) = %d\n",sizeof(short));  
    printf("sizeof(unsigned short) = %d\n",sizeof(unsigned short));
    printf("           sizeof(int) = %d\n",sizeof(int));    
    printf("  sizeof(unsigned int) = %d\n",sizeof(unsigned int));
    printf("          sizeof(long) = %d\n",sizeof(long));   
    printf(" sizeof(unsigned long) = %d\n",sizeof(unsigned long));  
}

运行结果:
这里写图片描述
long类型为四个字节,取值范围为-2^31~2^31-1,即-2147483648~2147483647

#include<stdio.h>
void main()
{
    long i = 2147483648;
    long _i = -2147483648;
    long maxi = 2147483649;
    long _maxi = -2147483649;
    long mini = 2147483647;
    long _mini = -2147483647;
    printf("       数值 = 无符号八进制       有符号十进制    无符号十进制    无符号十六进制\n");
    printf(" 2147483647 = %o\t %d\t %u\t %x\n",mini,mini,mini,mini);
    printf("-2147483647 = %o\t %d\t %u\t %x\n",_mini,_mini,_mini,_mini);
    printf(" 2147483648 = %o\t %d\t %u\t %x\n",i,i,i,i);
    printf("-2147483648 = %o\t %d\t %u\t %x\n",_i,_i,_i,_i);
    printf(" 2147483649 = %o\t %d\t %u\t %x\n",maxi,maxi,maxi,maxi);
    printf(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值