计算机中的数据有三种表示方法:原码,反码,和补码
所有的运算与存储都是以补码形式运算
原码,反码,补码均有符号位和数值位两部分
符号位为:0 表示“正”
1 表示 “负”
例如:0101 5
1101 -5
存储和运算时均使用补码,这样可以将符号位和数值域统一处理,将加法和减法也统一处理
反码
反码:正数的反码与其原码相同,负数的反码是除符号位意外对其原码诸位去反
+10的原码:
00000000 00001010
+10的反码:
00000000 00001010
-10的反码:
11111111 11110101
补码
补码:正数的补码与原码相同,负数的补码是在其反码的末位+1(二进制类型的+1)
-10的补码
11111111 11110110
补码的意义
补码的意义:符号位和数值域统一处理,将加法和减法可以统一处理
10-10——>10+(-10)
+10的补码:00000000 00001010
-10的补码: 11111111 11110110
经过等于0 :00000000 00000000
溢出
(补码之间相互对应相加,不断向上进一,最后一个一“溢出”)
溢出情况:int分为long(int)和short(int)
short(int)字符范围为:-32768~+32767 (如果超出范围,溢出,(运算是所使用符合范围的整数标准类型))
整数类型
类型
存储大小
值范围
char
一字节
-128~127或0~255
unsigned char
一字节
0~255
signed char
一字节
-128~127
int
2或4字节
-32768~32767或-2147483648~2147483647
unsigned int
2或4字节
0~65535或0~4294967295
short
2字节
-32,768 ~ 32,767
unsigned short
2字节
0 ~ 65,535
long
4字节
-2,147,483,648 ~ 2,147,483,647
unsigned long
4字节
0 ~ 4,294,967,295
浮点类型
注意:e或者E—–>10
实数型的表示:
1,有字母e或者E
2,e之前必须有数值
3,e之后必须为整数
例如:123=1.23X10^2 <===>1.23e2
字符类型:用一对单引号括起来的单个字符,如:‘a’ ,‘b’
字符串常量:双引号括起来的字符序列
ASCII字符代码表
类型
char:通常是一个字节(八位),一个整数类型
int:
float:单精度浮点数,一个符号,8位指数,23位小数
double:双精度浮点数,一位符号,11位指数,52位小数
void:表示类型的确实
数据类型的转换:
1:隐形转换:
自动类型转换:(算数转换)(不同类型数据运算转换成相同数据以便运算长度更长,精度更高)
赋值转换:(赋值两端数据类型相等)赋值转换统一左边类型
输出转换
函数调用转换
2,显式转换:
强制转换:(类型名)表达式 :表达式按照括号类型转换(浮点数强制整型,不四舍五入,直接舍)
C语言标准库函数转换双精度
变量
#include "stdio.h"
int main()
{
int price=0; //定义一个变量,变量的名称为price,类型为int,初始值是0
printf("请输入金额(元):");
scanf("%d",&price);
int change = 100 - price;
printf("找您%d元。\n",change);
return 0;
}
变量的一般形式: