//变量类型回顾 // 负数 有符号
//sbyte (-128-127) 1字节 8位
//int (-21亿多-21亿多) 4字节 32位
//short (-3万多-3万多) 2字节 16位
//long (-9百万兆多-9百万兆多) 8字节 64位
//short a = Convert.ToInt16("jin");
//Console.WriteLine(a);
//正数 无符号
//byte (0-255) 1字节 8位
//uint (0-42亿多) 4字节 32位
//ushort (0-6万多) 2字节 16位
//ulong (0-18百万兆多) 8字节 64位
//浮点数
//float (小数位f 7-8位有效数字) 4字节 32位
//double (小数位 15位有效数字) 8字节 64位
//decimal (27-28 位有效数字 非必要不用) 16字节 128位
//decimal
//特殊
//bool (真假 true和flase) 1字节 8位
//char (一个字符) 2字节 16位
//string (一串字符) 可变 不固定
// 1byte = 8bit
// 1M = 1024byte
// 1GB = 1024MB
// 1TB = 1024GB
#region //通过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);
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);
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);
//特殊
int boolSize = sizeof(bool);
Console.WriteLine("bool 所占字节数为:"+boolSize);
int charSize = sizeof(char);
Console.WriteLine("char 所占字节数为:"+charSize);
//数字36.6 怎么表达
float sz = 36.6f;
Console.WriteLine("数字"+sz);
#endregion
#region 变量本质
{//变量本质是二进制,计算机中所有数据的本质都是二进制 是一堆0 和1
//为什么是二进制?
//数据传递只能通过电信号,只能开和关两种状态。所以就用0和1来表示这两种状态
//计算机中存储单位最小位bit(位),他只能表示0和1两个数字
//1bit 就是1个数 要不是0 要不是1
//为了方便数据表示
//出现一个叫byte字节的单位,它是由8个bit组成的储存单位。
//所以我们一般说一个字节为8位。
//1byte = 0000 0000
//二进制和十进制的对比
//二进制和十进制的相互转换
}
#endregion
#region //十进制 转换二进制
{
// 0 0
// 1 1 0+1
// 2 2/2=1余0 10
// 3 3/2=1余1 1没法除2了结束 11
// 4 4/2=2余0 2/2=1余0 100
// 5 5/2=2余1 2/2=1余0 101
// 6 6/2=3余0 3/2=1余1 110
// 7 7/2=3余1 3/2=1余1 1没法除2了结束,所以是 111
// 8 8/2=4余0 4/2=2余0 2/2=1余0 1没法除2了结束, 1000
// 9 9/2=4余1 4/2=2余0 2/2=1余0 1没法除2了结束, 1001
//10 10/2=5余0 5/2=2余1 2/2=1余0 1没法除2了结束, 1010
//90 90/2=45余0 45/2=22余1 22/2=11余0 11/2=5余1 5/2=2余1 2/2=1余0 1011010
//456 456/2=228余0 228/2=114余0 114/2=57余0 57/2=28余1 28/2=14余0 14/2=7余0 7/2=3余1 3/2=1余1 111001000
//99 99/2=49---1 49/2=24---1 24/2=12---0 12/2=6---0 6/2=3---0 3/2=1---1 1100011
}
#endregion
#region //二进制 转换十进制
{
//11000111 从右到左看 最右边的一位为第0位 如果该为不为0是1 则加上2的N位次方 末位数为1的 加2的N位次方=199
//11000111 从右到左看第一位第二位第三位都是1 则 2的0次方+2的1次方+2的2次方+2的6次方+2的7次方(从右向左数0123456 第六位第七位都是1)
// 1+2+4+64+128=199
//001101 1+4+8
// 0 0
// 1 2的0次方=1
//10 0+第一位2的1次方=2
//11 第0位2的0次方+第一位2的1次方=3
//1010 0+2的1次方+2的3次方=0+2+6=8
//110 0+2的1次方+2的2次方=0+2+4 =6
//1101 2的0次方+2的2次方+2的3次方=1+4+8=13
//1010101
//2的0次方+2的2次方+2的4次方+2的6次方=85
//1+4+16+64=85
//11010101
//2的0次方+2的2次方+2的4次方+2的6次方+2的7次方=213
//1+4+16+64+128=213
// str6 = "3214" + 1 + true + 1.65;
}
#endregion
C# 变量本质 #我的编程语言学习笔记
于 2023-08-31 14:12:21 首次发布