6.变量的本质

6.变量的本质


6.1 知识点

变量类型回顾

有符号类型

  • sbyte (-128~127)
  • int (-21亿多~21亿多)
  • short (-3万多~3万多)
  • long (-9百万兆多~9百万兆多)

无符号类型

  • byte (0~255)
  • uint (0~42亿多)
  • ushort (0~6万多)
  • ulong (0~18百万兆多)

浮点数

  • float (7~8位有效数字)
  • double (15~17位有效数字)
  • decimal (27~28位有效数字)

特殊类型

  • bool (true和false)
  • char (一个字符)
  • string (一串字符)

变量的存储空间

  • 1byte = 8bit
  • 1MB = 1024byte
  • 1GB = 1024MB
  • 1TB = 1024GB

获取变量类型所占的内存空间

通过sizeof方法可以获取变量类型所占的内存空间(单位:字节)

有符号类型

int sbyteSize = sizeof(sbyte); 
Console.WriteLine("sbyte 所占的字节数为:" + sbyteSize); 

int intSize = sizeof(int); 
Console.WriteLine("int 所占的字节数为:" + intSize); 

int shortSize = sizeof(short); 
Console.WriteLine("short 所占的字节数为:" + shortSize); 

int longSize = sizeof(long); 
Console.WriteLine("long 所占的字节数为:" + longSize); 

输出结果:

sbyte 所占的字节数为:1 
int 所占的字节数为:4 
short 所占的字节数为:2 
long 所占的字节数为:8 

无符号类型

int byteSize = sizeof(byte); 
Console.WriteLine("byte 所占的字节数为:" + byteSize); 

int uintSize = sizeof(uint); 
Console.WriteLine("uint 所占的字节数为:" + uintSize); 

int ushortSize = sizeof(ushort); 
Console.WriteLine("ushort 所占的字节数为:" + ushortSize); 

int ulongSize = sizeof(ulong); 
Console.WriteLine("ulong 所占的字节数为:" + ulongSize); 

输出结果:

byte 所占的字节数为:1 
uint 所占的字节数为:4 
ushort 所占的字节数为:2 
ulong 所占的字节数为:8 

浮点数

int floatSize = sizeof(float); 
Console.WriteLine("float 所占的字节数为:" + floatSize); 

int doubleSize = sizeof(double); 
Console.WriteLine("double 所占的字节数为:" + doubleSize); 

int decimalSize = sizeof(decimal); 
Console.WriteLine("decimal 所占的字节数为:" + decimalSize); 

输出结果:

float 所占的字节数为:4 
double 所占的字节数为:8 
decimal 所占的字节数为:16 

特殊类型

int boolSize = sizeof(bool); 
Console.WriteLine("bool 所占的字节数为:" + boolSize); 

int charSize = sizeof(char); 
Console.WriteLine("char 所占的字节数为:" + charSize); 

输出结果:

bool 所占的字节数为:1 
char 所占的字节数为:2 

注意: sizeof无法获取string类型所占的内存大小,因为字符串长度是可变的,不定。

变量的本质是2进制

变量的本质是2进制——> 计算机中所有数据的本质都是二进制,是一堆0和1。

为什么是2进制?

数据传递只能通过电信号,只有开和关两种状态。所以就用0和1来表示这两种状态。

计算机中的存储单位最小为bit(位),它只能表示0和1两个数字。

1bit 就是1个数,要不是0要不是1。

为了方便数据表示,出现一个叫byte(字节)的单位,它是由8个bit组成的存储单位。所以我们一般说一个字节为8位。

一个字节的状态举例:

  • 1byte = 0000 0000
  • 1byte = 1111 1111

1字节可以表示2的8次方种状态,即0-255。

有符号数第一个比特充当符号位。当该符号位为0时,表示的是正数,为1时表示负数。

二进制和十进制的对比和转换

十进制和二进制的对比


可以做到一一对应。

十进制转二进制


除二取余法。

二进制转十进制


逐个位累加2的n-1次方。


6.2 知识点代码

using System;

namespace Lesson03_变量的本质
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("变量的本质");

            #region 变量类型回顾
            // 有符号 
            //sbyte   (-128~127) 
            //int     (-21亿多~21亿多) 
            //short   (-3万多~3万多)
            //long    (-9百万兆多~9百万兆多)

            // 无符号 
            //byte    (0~255) 
            //uint    (0~42亿多) 
            //ushort  (0~6万多)
            //ulong   (0~18百万兆多)

            // 浮点数 
            //float   (7~8位有效数字) 
            //double  (15~17位有效数字)
            //decimal (27~28位有效数字)

            // 特殊 
            //bool    (true和false) 
            //char    (一个字符)
            //string  (一串字符)
            #endregion

            #region 知识点一 变量的存储空间(内存中)
            // 1byte = 8bit 
            // 1MB = 1024byte
            // 1GB = 1024MB
            // 1TB = 1024GB

            // 通过sizeof方法 可以获取变量类型所占的内存空间(单位:字节)


            //有符号
            int sbyteSize = sizeof(sbyte);
            Console.WriteLine("sbyte 所占的字节数为:" + sbyteSize);
            int intSize = sizeof(int);
            Console.WriteLine("int 所占的字节数为:" + intSize);
            int shortSize = sizeof(short);
            Console.WriteLine("short 所占的字节数为:" + shortSize);
            int longSize = sizeof(long);
            Console.WriteLine("long 所占的字节数为:" + longSize);

            //sbyte 所占的字节数为:1
            //int 所占的字节数为:4
            //short 所占的字节数为:2
            //long 所占的字节数为:8

            Console.WriteLine("******************************************");


            //无符号
            int byteSize = sizeof(byte);
            Console.WriteLine("byte 所占的字节数为:" + byteSize);
            int uintSize = sizeof(uint);
            Console.WriteLine("uint 所占的字节数为:" + uintSize);
            int ushortSize = sizeof(ushort);
            Console.WriteLine("ushort 所占的字节数为:" + ushortSize);
            int ulongSize = sizeof(ulong);
            Console.WriteLine("ulong 所占的字节数为:" + ulongSize);

            //byte 所占的字节数为:1
            //uint 所占的字节数为:4
            //ushort 所占的字节数为:2
            //ulong 所占的字节数为:8
            Console.WriteLine("******************************************");



            //浮点数
            int floatSize = sizeof(float);
            Console.WriteLine("float 所占的字节数为:" + floatSize);
            int doubleSize = sizeof(double);
            Console.WriteLine("double 所占的字节数为:" + doubleSize);
            int decimalSize = sizeof(decimal);
            Console.WriteLine("decimal 所占的字节数为:" + decimalSize);


            //float 所占的字节数为:4
            //double 所占的字节数为:8
            //decimal 所占的字节数为:16

            Console.WriteLine("******************************************");



            //特殊类型
            int boolSize = sizeof(bool);
            Console.WriteLine("bool 所占的字节数为:" + boolSize);
            int charSize = sizeof(char);
            Console.WriteLine("char 所占的字节数为:" + charSize);

            //bool 所占的字节数为:1
            //char 所占的字节数为:2

            //sizeof是不能够得到string类型所占的内存大小的
            //因为字符串长度是可变的 不定 
            //int stringSize = sizeof(string);
            //这样写会报错
            #endregion

            #region 知识点二 变量的本质
            //变量的本质是2进制——>计算机中所有数据的本质都是二进制 是一堆0和1 
            //为什么是2进制?
            //数据传递只能通过电信号,只有开和关两种状态。所以就用0和1来表示这两种状态
            //计算机中的存储单位最小为bit(位),他只能表示0和1两个数字
            // 1bit 就是1个数 要不是0要不是1
            // 为了方便数据表示
            // 出现一个叫byte(字节)的单位,它是由8个bit组成的存储单位。
            // 所以我们一般说一个字节为8位

            // 一个字节的状态举例
            // 1byte = 0000 0000
            // 1byte = 1111 1111
            //1字节可以表示2的8次方种状态

            //有符号数第一个比特充当符号位符号位
            //当该符号位为0时,表示的是正数,为1时表示负数

            // 2进制和10进制的对比
            // 2进制和10进制之间的相互转换
            #endregion
        }
    }
}

6.3 练习题

请默写出常用的14个变量类型,以及他们所占用的内存空间。

请将2进制11000111、001101、01010101转为10进制,写出计算过程

请将10进制99、1024、78937转为2进制,写出计算过程

尝试win+r输入calc打开计算器进行验算 点击BIn(二进制) 输入二进制数进行转换验算





转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏