CS1L3——变量的本质
变量的本质
变量的本质是二进制 ——> 计算机中所有数据的本质都是二进制,也就是一堆0和1
是二进制的原因是:数据传递只能通过电信号,电信号只有开和关两种状态
计算机中的存储单位最小为 bit
(位),他只能表示0和1两个数字
1bit 就是1个数,0或者1
为了方便数据表示,出现一个叫 byte
(字节)的单位,它是由8个 bit
组成的存储单位,所以我们一般说一个字节为8位
为何 int
最多表示-21亿~21亿?因为 int
是由4个字节,也就是32 个 0或1 表示的
关键字
变量的存储空间
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
| Console.WriteLine("sbyte所占的字节数为:" + sizeof(sbyte)); Console.WriteLine("int所占的字节数为:" + sizeof(int)); Console.WriteLine("short所占的字节数为:" + sizeof(short)); Console.WriteLine("long所占的字节数为:" + sizeof(long)); Console.WriteLine("——————————————————————————————————————");
Console.WriteLine("byte所占的字节数为:" + sizeof(byte)); Console.WriteLine("uint所占的字节数为:" + sizeof(uint)); Console.WriteLine("ushort所占的字节数为:" + sizeof(ushort)); Console.WriteLine("ulong所占的字节数为:" + sizeof(ulong)); Console.WriteLine("——————————————————————————————————————");
Console.WriteLine("float所占的字节数为:" + sizeof(float)); Console.WriteLine("double所占的字节数为:" + sizeof(double)); Console.WriteLine("decimal所占的字节数为:" + sizeof(decimal)); Console.WriteLine("——————————————————————————————————————");
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位次方
- 十进制转二进制:除二取余,直到不能取为止