数据存放、有符号、无符号整型、进制数的输入输出

这篇博客介绍了C语言中数据的存储方式,包括有符号和无符号整型的表示及范围,以及它们在内存中的补码形式。此外,还详细阐述了整型的分类,如int、short、long及其无符号类型,并展示了不同进制(十进制、八进制、十六进制)之间的转换。通过示例代码展示了输入输出格式的使用。
摘要由CSDN通过智能技术生成

数据存放

数据在机器中是以补码的形式存放的
有符号数据:一个符号位,31个数据位,整数范围:0~31次方
原码:正数:符号位为0,数据位是自己的数据的二进制形式
      负数:符号位位1,数据位是自己的数据的绝对值的二进制形式

反码:正、负数:符号位不变,数据位取反

补码:正数:它本身的原码就是补码
      负数:它本身的反码再+1
例:8: 原码:0000...01000    -8:原码:1000...01000
       反码:1111...10111        反码:1111...10111
       补码:0000...01000        补码:1111...11000
无符号数据:没有正负之分,也就没有符号位,32个数据位,整数范围:0~32次方

整型分类

 有符号型:signed (一般默认格式为有符号型,signed可以省略不写)

                   整型:signed int --- 4字节----输入输出格式:%d

                  短整型:signed short ---- 2字节---输入输出格式: %hd

                  长整型:signed long ---- 4字节或者8字节---输入输出格式:%ld

无符号型:unsigned --- 输入输出格式:%u,%u默认为十进制输出

                  整型:unsigned int --- 4字节 ---输入输出格式:%u

                 短整型:unsigned short ---2字节---输入输出格式:%hu

                 长整型:unsigned long ---4字节或者8字节---输入输出格式:%lu

进制数

十进制格式:n 例:1,5,45,89 (n取值范围为0~9)

八进制格式:0n 例:011、056、 027、05 (n取值范围为0~7)

十六进制格式:0xn 例:0xac 、 0x45 (n取值范围为0~f)

十进制的输入输出格式:%d

八进制的输入输出格式:%o

十六进制的输入输出格式:%x

转换成其他进制输出只需要在输出时,选择对应的输出格式就行

例:int a = 5;

    printf("%o",a); //将十进制数转化为八进制数

总结代码

#include <stdio.h>

int main()
{
    int a =-5;                           //定义一个有符号的整型变量,并且赋值为-5
    short b =-6;                         //定义一个有符号的短整型变量,并且赋值为-6
    long c= -7;                          //定义一个有符号的长整型变量,并且赋值为-7
    unsigned int d=8;                    //定义一个无符号的整型变量,并且赋值为8
    unsigned short e=6;                  //定义一个无符号的短整型变量,并且赋值为6
    unsigned long f=4;                   //定义一个无符号的长整型变量,并且赋值为4
    int sjz = 5 ;                        //赋值一个十进制数
    int bjz = 015;                       //赋值一个八进制数
    int sljz = 0x45;                     //赋值一个十六进制数

    printf("%d %hd %ld\n",a,b,c);        //输出有符号变量a,b,c
    printf("%u %hu %lu\n",d,e,f);        //输出无符号变量d,e,f
    printf("%d %o %x\n",sjz,bjz,sljz);   //输出十进制数、八进制数、十六进制数
    printf("%o %d %d\n",sjz,bjz,sljz);   //将十进制数转为八进制数输出,
                                           将八进制数、十六进制数转为十进制数输出
    return 0;
}
#include <stdio.h>

int main()
{
    int a ;                                       //定义一个有符号的整型变量
    short b ;                                     //定义一个有符号的短整型变量
    long c;                                       //定义一个有符号的长整型变量
    unsigned int d;                               //定义一个无符号的整型变量
    unsigned short e;                             //定义一个无符号的短整型变量
    unsigned long f;                              //定义一个无符号的长整型变量

    int sjz ;                                     //定义一个整型变量用来存放十进制数
    int bjz  ;                                    //定义一个整型变量用来存放八进制数
    int sljz  ;                                   //定义一个整型变量用来存放十六进制数
    
    scanf("%d %hd %ld",&a,&b,&c);                 //输入数据给变量a,b,c
    scanf("%u %hu %lu",&d,&e,&f);                 //输入数据给变量e,f,g
    scanf("%d %o %x",&sjz,&bjz,&sljz);            //输入十进制数,八进制数,十六进制数

    printf("%d %hd %ld\n",a,b,c);                 //输出有符号变量a,b,c
    printf("%u %hu %lu\n",d,e,f);                 //输出无符号变量d,e,f
    printf("%d %o %x\n",sjz,bjz,sljz);            //输出十进制数、八进制数、十六进制数
    printf("%o %d %d\n",sjz,bjz,sljz);            //将十进制数转为八进制数输出,
                                                    将八进制数、十六进制数转为十进制数输出
    return 0;
}

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值