数据类型-整型(C语言)

目录

1 整型的表现形式和存储形式

1.1 整型分类

1.1 扩展类型

1.3 整数的表现形式

1.4整数的存储形式

2 各种进制及其转换

2.1 进制判断依据

2.2 十进制- - >二进制

2.3 八进制 

2.4 十六进制

3 各整型类型及所占字节数

3.1 位和字节

3.2 字节数的影响因素

3.3 各类型所占字节数

3.4 各类型所占字节数

4 综合案例

4.1 各整型输出控制符

4.2 案例


1 整型的表现形式和存储形式

1.1 整型分类

包括: 基本整型 int
短整型 short int
长整型 long int
双长整型 long long int C99

1.1 扩展类型

[signed] short [int] 有符号短整型
unsigned short [int] 无符号 短整型
[signed] int 有符号基本整型
unsigned [int] 无符号 基本整型
[signed] long [int] 有符号长整型
unsigned long [int] 无符号 长整型
[signed] long long [int] 有符号双长整型(C99新增)
unsigned long long [int] 无符号 双长整型(C99新增)

1.3 整数的表现形式

按极性:正数、负数和零。
按进制:二进制、八进制、十进制、十六进制等。

1.4整数的存储形式

在计算机内存中均是按照 二进制 补码 形式 存储 的。
(1)原码
二进制原码: 符号位 + 数值位
最高位 为符号位
        正数:0
        负数:1
(2)原码举例

 

数的原码反码补码相同

(3)负数的反码、补码

反码:把负数原码的符号位保持不变,数值位按位求反。
补码:把负数反码加1即得其补码。

2 各种进制及其转换

2.1 进制判断依据

前缀法:在C中,一般根据前缀确定进制。
前缀 0(零) 八进制, 注意:数字0,非字母o
前缀 0x 或 0X 十六进制
默认 十进制

2.2 十进制- - >二进制

2.3 八进制 

数码及规则:0~7 必须 数字 0开头 ,逢八进一
举例1:八进制数037代表的十进制数:
3\times 8^{1}+7\times 8^{0}=31 
举例2:十进制数22用八进制可表示为:026,
验证: 6\times 8^{0}+2\times 8^{1}=22

2.4 十六进制

数码及规则:由0~9、A~F(a~f)16个数码,逢十六进一。
举例1:0x 1f 、0x1F、0X1f或0X1F,对应十进制数均为 1\times 16^{1}+15\times 16^{0}=31
举例2:十进制数22可表示为:0x16 或 0X16 :6\times 16^{0}+1\times 16^{1}=22

各整型类型及所占字节数

3.1 位和字节

位(bit):处理数据的 最小单位 ,只能0或1。
字节(Byte):处理数据的 基本单位 ,通常系统中一个字节为8位。即 1 Byte=8 bit

3.2 字节数的影响因素

影响因素:机器位数、C编译器等。
举例:32位系统,Turbo C 环境中 int 2字节。32位系统,VC++6.0 环境中 int 4字节。

3.3 各类型所占字节数

short  2字节
int     2或4 字节
long  4 字节
long long 8 字节
工具: sizeof 运算符求所在环境中各类型所占字节数
sizeof(int)   sizeof(long)

3.4 各类型所占字节数

C标准未规定各类型所占具体字节数,仅规定各整型类型所占字节数满足如下关系:
sizeof( short ) <= sizeof( int ) <= sizeof( long ) <= sizeof(long long )

4 综合案例

4.1 各整型输出控制符

%hd    以十进制 短整型
%d     以十进制 基本整型
%u     以十进制 无符号整型
%ld    以十进制 长整型
%lo    以八进制 长整型
%lh    以十六进制 长整型

4.2 案例

#include<stdio.h>

int main(void)

{

     unsigned int un_a=2500000000; 
     long l_b=65539;
     printf("In this system:\n");
     printf("short  has %d bytes.\n",sizeof(short));
     printf("int    has %d bytes.\n",sizeof(int));
     printf("long  has %d bytes.\n",sizeof(long));
     printf("un_a = %u not %d\n",un_a,un_a);
     printf("l_b = %ld not %hd\n",l_b,l_b);
     return 0;

}

 

 

  • 11
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值