一、数据存储的方式
原码
|
2.反码
补码
在计算机系统中,数值一律用补码来存储,主要原因是:. 1.统一了零的编码。 2.将符号位和其它位统一处理 3.将减法运算转变为加法运算 4.两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 |
例如:72-68 即为72+(-68)
72
原码:01001000
反码:01001000
补码:01001000
-68
原码:11000100
反码:10111011
补码:10111100
所以:72+(-68)=4
二进制表示为 1 0000 0100
注:当结果二进制数出现九位时,舍弃最左边位数,即结果为0000 0100
二、无符号和有符号的取值范围
无符号
unsigned 无符号的值一般为正值
例如:char 占1个字节大小 1B=8bit 所以char 存储数据大小为:0—2^8-1 int 4个字节 0—2^32-1 |
有符号
sign 可以为负数
例如:char -2^8—2^7-1 int -2^31—2^31-1 |
三、sizeof函数
1.sizeof不是函数,所以不需要包含任何头文件,它的功能是计算一个数据 类型的大小,单位为字节。 2.sizeof的返回值为size_t. 3.size_t 类型在 32位操作系统下是unsigned int,是一个无符号的整数。 |
例如:
#include<stdio.h>
#include<stdlib.h>
int main()
{
unsigned int len=sizeof(char);//char, int, float, long ,double,
printf("%d",sizeof(char));
system("pause");
return 0;
}
注:相应字符型有其存储数据大小,不能超出,否则运行时会出现乱码。
四、数值溢出
一个字节有八位,。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch = 127;
ch = ch + 2;
printf("%d", ch);
system("pause");
}五、注意
需要注意的是,整型数据在丙存中占的字节数与所选择的操作系统有关。虽然 C语言标准中没有明确规定整型数据的长度,但 long 类型整数的长度不能短于int 类型,short 类型整数的长度不能长于int 类型。
当一个小的数据类型赋值给一个大的数据类型,不会出错,因为编译器会自动转化,但当一个大的类型赋值给一个小的数据类型,那么就可能丢失高位。
513

被折叠的 条评论
为什么被折叠?



