1、未赋值的变量0
在电子技术中,0一般表示低电平,1表示高电平。在逻辑计算中,0一般表示逻辑假(False),1为逻辑真(True),逻辑电路中通常只有两个状态,开关的接通与断开,这两种状态用0和1表示。
在vb中,未赋值的变量,编译器一般将其初始化为0. .net framework 中如vb.net变量使用之前未初始化,则其值为空。
c和c++中未初始化的变量编译器不会将其初始化为0,而是内存中原来内存单元的值。
c#中,未赋值直接使用,将会编译通不过。
2、数值0的类型转换
0与bool型关系,0为false,非0为true
在计算阶乘的时候,我们定义阶乘后求得的值的结果是int类型,但是发现当求14!的时候,发现结果比13!还小,原因就是14!的阶乘超过了int类型的范围,那如果将int改为long类型,理论上行,实际上ANSI C中规定,在字长为32位的系统中,int类型和long类型都是32位。故这里改为long也不能解决问题。
但是在支持64位字长的c#中,long类型使用64位二进制表示(8个字节),但是当计算到21!的时候,就变成负数了,对于基本整数,可以用ulong(无符号长整形)类型来保存数据。那么更大的数据怎么办?
可以在程序中使用数组来表示数据的每一位,但是在微软的.net Framework 4 中已经提供了一个大整数类型,可以处理任意长度的大数据。
使用二进制优点还有:适合逻辑运算,二进制只有两个数码,正好与逻辑代数中的真和假相吻合。还易于转换,二进制数与八进制数,16进制数之间的转换很方便。抗干扰能力强,用二进制表示数据具有抗干扰能力。仍能可靠的分辨出高低电平(只分辨高低,不是具体电压)
十进制数转成二进制数,先得到的余数放在最后二进制的低位。(除2取余,逆序排列)
进制转换的时候,假如12想要返回大写字母,则print("%c",12-10+'A');不格式化输出则12-10+'A'返回的是ascii码。如果是7,则输出scill码就是7+'0',如果想输出字符还是用格式化。
相反,如果是一个16进制的B转成10进制,应该是B-'A'+10