数据存放
数据在机器中是以补码的形式存放的
有符号数据:一个符号位,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;
}