值类型变量
以(值类型)short/ushort为例
系统自动搜寻可用的内存,并根据数据类型划分变量范围。
ushort:
class Program
{
static void Main(string[] args)
{
ushort us;
us=1000;
}
}
分析:1000为10进制,折成2进制为1111101000(10位),因为ushort是16bit(16位),所以不满的位数要用0来补齐,即0000001111101000。而高8位(00000011)要存储在内存的较高地址上(因为最高位一定是符号位)。比如:系统给ushort类型的变量(us)分配的内存地址为10000012和10000013(因为内存以字节(B)为基本单位,而不是bit,即:一个地址只对应8bit内存空间),则高8位存储在10000013的内存中。【高高低低原则】
short:
class Program
{
static void Main(string[] args)
{
short us;
us=-1000;
}
}
分析:与ushort类似,只不过需要注意的是,存储的1000和存储-1000,在内存上的不同为:将-1000按1000存入后,按位取反再+1。
可以对上述内容进行验证,检验是否为“按位取反再+1”,方法如下:
class Program
{
static void Main(string[] args)
{
short us;
us = -1000;
string str = Convert.