进制 进位的机制
位权:从个位开始向左依次编号为0,1,2...分别代表进制的几次方
//二进制 八 十 十六
进制转化
https://jingyan.baidu.com/article/495ba84109665338b30ede98.html
各个进制间的转化
区分:八进制前面有0 ; 十六进制前面是 0x
十进制转X进制:连续除 X 倒取余
X进制转十进制:按(位)权求和
2的10次方1024对应的十进制值:100 0000 0000
从第一位开始:1 2 4 8 16 32 64 128 . . ... 256 512 1024 2048
//二进制:00000111 = 7 (1*2^0+1*2^1+1*2^2 == 1 + 2 +4)
//71 (十) = 107(八进制) //满8往前进一位
//十六 0x 0123456789abcdef(表示1到15)
//0x10 = 16 (0* 16^0 +1*16^1)
二进制转化为八:看三位 从个位开始的三位 为八进制的从左到右第一位
转为十六:看四位
进制转化 十六 二 八
100 0X64 01100100 144
获取内存占用的大小
bytes(字节)存储单位 2.5MB/s
bits比特(位)传输单位 20mbps(通常20兆的网除8就是2.5MB/s下载速度)
一字节 == 8比特位,一个汉字占两个字节 一个字母占1个字节
同一个类型的内存是固定的
有符号整形第一位是符号位 uint 是无符号整型
Console.WriteLine("bool 类型大小 ->{0}", sizeof (c));//sizeof计算 出来单位(字节)
此处计算的是bool 类型的内存占用大小
float 4字节 double 8字节
注:int类型默认32位有大小范围 且第一位为符号位 0 为正 1 为负
//00000000 00000001
//11111111 11111111最大的十六位是2^16-1 = 255
运算符
二元运算符+ - * / % += -= *= /= > < >= <= ++ --
有两个操作数在运算符左右
赋值运算符 =
一元运算符 ++ --
三元运算符 ?:
逻辑运算符 && || ! ==
位运算符 & | ^ << >>
c -= a;意思是 c = c - a;
a += b;意思是 a = a + b;
float d = a + e;//浮点数可以取余 可以++ --
// float e = a / d;
// Console.WriteLine ("{0}",e);
// a *= b;意思是 a = a * b;
// a /= b;意思是 a = a / b;
求余运算符 %
a % b;//如果a < b 那么余数是a
// int a = 34,b = 45;
// //a % b = 3;
// //b % a = 2;
// Console.WriteLine("{0},b % a");
// Console.WriteLine("{0},b % 10");//求个位数
// float c = 1.2f,d = 2.4f;
// int e = (int)(a % d);//关于运算符优先级问题(int)(a % b)
// Console.WriteLine ("{0}",e);
//关系运算符 运算结果为bool类型
// int a = 34,b = 45;
// bool c = a > b;
// c = a < b;
// c = a >= b;
// c = a <= b;
// c = a != b;//不等
// c = a == b;//恒等
//++ -- 一元运算符
//当++ --运算单独在一行时 在前在后都一样;
//a++(a--) 先做其他操作,再进行自加(自减)
//++a(--a) 先进行自加(自减),再做其他运算
// int a = 1;
// ++a;//a = a + 1;
// a--;//a = a - 1;
//
// float b = 1.0f;
// b++;//b = b + 1;
// b--;//b = b - 1;
(a++和++a的区别)
//a++先输出了a,先操作a后自加;
//++a先加后输出;最终输出结果都是a+1;
//
// int c = 3;
// int d = c + a++;//d = 3 + 1 = 4 后a + 1后 a = 2
// int e = c + ++a;//e = 3 + (a + 1 = 3)=6 此时a = 3
// Console.WriteLine("{0},{1},{2}",a,d,e);
//三元运算符 ?:
// int a = 10,b = 9;
// int c = a > b ? a : b;
取ab里面的最大值
//如果a>b成立则c为a,不成立c为b;
逻辑运算符 与&&(且) 或|| 非 !
//注 C#短路机制导致如果在或|中前面正确后面的就不会计算
如果在与&&中前面错误后面的也不会计算 为了减少计算量
//思考下面 逻辑运算符短路机制
// int a = 2,b = 3,c = 5;
// if ((a++ > b || --c > b) && ++a == b) {
// Console.WriteLine ("上{o},{1},{2}", a, b, c);
// } else {
// Console.WriteLine ("下{0},{1},{2}",a,b,c);
// }
// int a = 2,b = 3, c = 4;
//// bool isRight = false ;
//// Console.WriteLine ("{0}",!isRight);//(! 非)
//
// if (a>1&&b<5){
// Console.WriteLine ("满足条件");//(与&&)
// }
//
// if (a > 4 || b < 4) {
// Console.WriteLine ("一真则真");//(或||)
// }
// if (a++ > 2 || --c <= 4) {
// Console.WriteLine ("a = {0},c = {1}", a, c);//a = 3 c = 4 c 不进行减减
// }//在或||运算中,当a++>2为真,那么后面的计算就不进行
//
// //此题中条件不满足 最终只执行到a++ 最后a = 3,b = 4
// if (a++ > 2 && --c <= 4) {
// Console.WriteLine ("a = {0},c = {1}", a, c);
// }
// Console.WriteLine ("a = {0},c = {1}", a, c);
//按位运算符
//& 按位与 一 0则为 0 两 1 为 1 ;
//| 按位或 一 1 则为 1 两 0 为 0 ;
//^ 按位异或 相同为 0 不同为 1
//~ 按位取反 0变 1 1变 0
//<< >> 按位左右移动 根据箭头移动方向
// int a = 15 ;//0000 1 1 1 1 >>0000 001 1
// int b = 60;//001 1 1 100 <<1 1 1 1 0000
// //0000 1100 & 12
// //0011 1111 | 63
// //0011 0011 ^ 51
// //1 100 1 100 ~ -52 补码 第一个数字 1 为正 0为负
// int c = a & b; //1 1为 1
}
}