1.进制转换

二进制

十进制

将十进制转换为二进制,一般使用除2取余法,也可以用类似的办法把十进制转换为k进制,称为除k取余法。

只需把得到的余数从下到上排列即可,例如89=(1011001)2,与其它进制的转换类似。二进制转换为八进制,因为8是2的三次方,所以二进制转换为八进制非常简单,只需将二进制串划分成每三位一组(如果需要的话,在前面补零)。二进制转换为十六进制,因为16是2的四次方,所以二进制转换为十六进制也非常简单,只需将二进制串划分成每四位一组(如果需要的话,在前面补零)。

推荐书 程序员的数学

2.内存单位

内存由千千万万个具有两个状态的电子开关组成,电子开关打开时代表1,闭合时代表0,每个电子开关可代表一位二进制数,这些电子开关称为比特(bit,也叫位),是最小存储单位。为方便存取信息,把这些电子开关有机地组织起来,一般用8个二进制位组成一个字节。比特用小写字母b,字节用大写字母B表示,因此有1 B = 8 b。计算机内存就是由很多排列整齐的字节组成,为管理方便,每个字节都有相应的编号,这个编号就是这个字节的地址,通过地址可以找到内存中任何一个字节的内容。如果只考虑正数,1个字节可表示最大数为28-1=255,因此可以表示0~255之间的整数,共256个数。国际单位制(SI)规定1kb = 1000 B(10的3次方),通常在标示储存媒介的储存容量时使用。但按照IEC(国际电工委员会)标准,计算机使用二进制表示计算机、电子信息数据容量的量纲,基本单位为字节B,1KB=1024 B(2的10次方),字节向上分别为KB、MB、GB、TB,每级为前一级的1024倍(2的10次方),比如1KB=1024B,1M=1024KB。因为210=1024最接近于1000,比较贴近10进制表示习惯,所以使用它。

  • 位bit(比特):电脑记忆体中最小的单位,每一位可以代表0或者1的。

  • 字节Byte:电脑中存储的最小单位。

    1Byte=8bit 1KB = 1024Byte 1MB = 1024KB 1G =1024MB

  • 网速10指的是Mbps(兆位/秒)是速率单位,换算成字节应该是10/8=1.25兆字节/秒

3.整形(整数)

  • 1个字节:有符号sbyte(-128~127),无符号Byte(0~255)
  • 2个字节:有符号short(-32768~32767),无符号ushort(0~65535)
  • 4字节:有符号int,无符号unit
  • 8字节:有符号long,无符号ulong

4.非整形(小数)

  • 4字节:单精度浮点类型float,精度7位。–1.0f
  • 8字节:双精度浮点类型double,精度15-16位。–1.2b
  • 16字节:128位数据类型decimal,精度28-29位,适用于财务和货币计算。–1.3m

注意事项

1.非整形变量赋值要加上后缀,如果不加默认位double。

2.浮点型运算会出现摄入误差

bool number = 1.0f-0.9f==0.1f  // 返回的结果位false

二进制无法精确表示1/10,就像十进制无法精确表示1/3,所以二级制表示十进制会有一些舍入误差,对于精度要求较高的场合会导致代码的缺陷,可以使用decimal代替

5.非数值型

  • char字符,2字节,存储单个字符,使用单引号
  • string字符串,存储文本,使用双引号
  • bool类型,1字节,可以直接赋值true真或false假,或者赋值表达式做判断。

6.变量:内存上的一块地,数据类型决定地的大小

变量分为声明和赋值两部分

6.1声明

声明就是在内存中开辟一块空间

语法

变量类型 变量名;

命名规则

有字母、数字和下划线组成,且不能以数字开头。不能使用保留关键字

建议命名规则

  • 以小写字母开头
  • 如果包含多个单词,除第一个单词外其他单词首字母大写,如sting studentName
  • 增加类型前缀便于理解。

6.2赋值

赋值就是在声明时开辟的空间内存储数据。

语法

变量名 = 数据;

注意事项

  • 局部变量在使用前必须赋值
  • 赋值的数据类型和变量声明时的类型必须相同
  • 同一变量只能声明一次,单可以多次赋值
static void Main(string[] args)
{
    //数据:250
    //数据类型 变量名称;
    //变量名称 = 数据;

    //声明
    int num;
    //赋值
    num = 250;

     //声明
     string str;
     //赋值
     str = "abc";
}

6.3实例

在控制台中录入玩家信息(用户名/生命值/攻击力/防御力)

最后在控制台输出:用户名位:xx,生命值为:xx,攻击力为:xx,防御力为xx。

using System;

namespace Day2
{
    class Program
    {
        static void Main(string[] args)
        {
            //内容 -> 控制台
            Console.WriteLine("请输入用户名:");
            //控制台 -> 变量
            string userName = Console.ReadLine();

            //内容 -> 控制台
            Console.WriteLine("请输入生命值:");
            //控制台 -> 变量
            string HP = Console.ReadLine();

            //内容 -> 控制台
            Console.WriteLine("请输入攻击力:");
            //控制台 -> 变量
            string attack = Console.ReadLine();

            //内容 -> 控制台
            Console.WriteLine("请输入防御力:");
            //控制台 -> 变量
            string defense = Console.ReadLine();

            Console.WriteLine($"用户名为:{userName},生命值为:{HP},攻击力为:{attack},防御力为:{defense}。");
        }
    }
}

7.相关代码

 //引入命名空间
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

//定义命名空间[类的住址]:对类进行逻辑上的划分,避免类的重名
namespace Day1
{
    //定义类[做工具]
    class Program
    {
        //变量
        static void Main()
        {
            //数据:250  将数据放入内存

            //数据类型  变量名称;
            //变量名称 = 数据;

            //声明
            int num;
            //赋值
            num = 250;


            //数据:abc
            //声明 + 赋值
            string str = "abc";
            //浮点型存储数据 --> 近似存储
            float f1 = 1 - 0.9f;
            //在同一范围内,变量不能重复声明
            //float f1 = 1 - 0.9f;
            double d2 = 1 - 0.9d;
            decimal m3 = 1 - 0.9m;
            bool re = f1 == 0.1f; //0.100000024 == 0.1 ===>false

            char c1;
            //变量在使用前必须赋值
            //Console.WriteLine(c1);
            //变量赋值的数据必须与声明时的数据类型兼容
            //c1 = 100;
            //变量可以多次赋值
            c1 = 'a';
            c1 = 'b';
            Console.WriteLine(c1);//返回b


        }
    }
}

发表评论

邮箱地址不会被公开。 必填项已用*标注