CS1L3——变量的本质

变量的本质

变量的本质是二进制 ——> 计算机中所有数据的本质都是二进制,也就是一堆0和1
是二进制的原因是:数据传递只能通过电信号,电信号只有开和关两种状态
计算机中的存储单位最小为 bit​(位),他只能表示0和1两个数字
1bit 就是1个数,0或者1
为了方便数据表示,出现一个叫 byte​(字节)的单位,它是由8个 bit​ 组成的存储单位,所以我们一般说一个字节为8位
为何 int​ 最多表示-21亿~21亿?因为 int​ 是由4个字节,也就是32 个 0或1 表示的

关键字

1
sizeof()    //查看某类型所占字节数

变量的存储空间

1bit就是内存中的1和0
1byte = 8bit
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
通过 sizeof​ 方法可以获取变量类型所占的内存空间(单位:字节)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//1、有符号的整形变量 能存储一定范围内的正负数包括0的变量类型
Console.WriteLine("sbyte所占的字节数为:" + sizeof(sbyte));
Console.WriteLine("int所占的字节数为:" + sizeof(int));
Console.WriteLine("short所占的字节数为:" + sizeof(short));
Console.WriteLine("long所占的字节数为:" + sizeof(long));
Console.WriteLine("——————————————————————————————————————");
//2、无符号的整型变量 能存储一定范围内0和正数的变量类型
Console.WriteLine("byte所占的字节数为:" + sizeof(byte));
Console.WriteLine("uint所占的字节数为:" + sizeof(uint));
Console.WriteLine("ushort所占的字节数为:" + sizeof(ushort));
Console.WriteLine("ulong所占的字节数为:" + sizeof(ulong));
Console.WriteLine("——————————————————————————————————————");
//3、浮点数(小数)
Console.WriteLine("float所占的字节数为:" + sizeof(float));
Console.WriteLine("double所占的字节数为:" + sizeof(double));
Console.WriteLine("decimal所占的字节数为:" + sizeof(decimal));
Console.WriteLine("——————————————————————————————————————");
//4、特殊类型
Console.WriteLine("bool所占的字节数为:" + sizeof(bool));
Console.WriteLine("char所占的字节数为:" + sizeof(char));
Console.WriteLine("string无法确定所占的字节数");

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sbyte所占的字节数为:1
int所占的字节数为:4
short所占的字节数为:2
long所占的字节数为:8
——————————————————————————————————————
byte所占的字节数为:1
uint所占的字节数为:4
ushort所占的字节数为:2
ulong所占的字节数为:8
——————————————————————————————————————
float所占的字节数为:4
double所占的字节数为:8
decimal所占的字节数为:16
——————————————————————————————————————
bool所占的字节数为:1
char所占的字节数为:2
string无法确定所占的字节数

sizeof​ 不能得到 string​ 类型所占的内存大小
因为字符串长度是可变的,不确定的

C# 的 char​ 是 Unicode UTF-16 字符,因此是 2 字节的(通常是)

二进制与10进制相互转换规则

  • 二进制转十进制:从右往左看 最右边一位为第0位,如果该位不为0,则加上2的n位次方
  • 十进制转二进制:除二取余,直到不能取为止