本节目标
- 数值类型 int、double、num
- 数值表示法 十进制、十六进制
- 科学计数法
- 数值转换
- 位运算
环境
数值
数值类型
int
整数值,其取值通常位于 -253 和 253 之间。
int class
double
64-bit (双精度) 浮点数,符合 IEEE 754 标准。
double class
num
int 和 double 都是 num 的子类。
num class
数值表示法 十进制、十六进制
1 2 3
| int a = 1001; int b = 0xABC; print([a, b]);
|
科学计数法
1 2
| num a = 21.2e3; print([a]);
|
数值转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
int a = int.parse('123'); double b = double.parse('1.223');
String a = 123.toString(); String b = 1.223.toString(); print([a, b]);
double a = 1.8; int b = a.toInt(); print(b);
|
位运算
&
与运算
同时 1
才行
1 2 3 4
| 1 0 1 0 10 0 0 1 0 2 -------- 0 0 1 0 2
|
1 2 3
| var a = 10; var b = 2; print(a & b);
|
|
或运算
有一个 1
就行
1 2 3 4
| 1 0 1 0 10 0 0 1 0 2 -------- 1 0 1 0 10
|
1 2 3
| var a = 10; var b = 2; print(a | b);
|
可以用在常量组合
1 2 3 4 5 6
| const USE_LEFT = 0x1; const USE_TOP = 0x2; const USE_LEFT_TOP = USE_LEFT | USE_TOP; var result = USE_LEFT | USE_TOP; print(result); assert(USE_LEFT_TOP == result);
|
~
非运算
二进制数逐位进行逻辑非运算
1 2 3 4 5 6
| 0 1 0 0 1 +9 二进制 最高位 0 整数 1 负数 0 0 1 1 0 补码 1 1 0 0 1 取反 1 1 0 1 0 加1 -------- 1 1 0 1 0 -10
|
^
异或
不相同的才出 1
1 2 3 4
| 1 0 1 0 10 0 0 1 0 2 -------- 1 0 0 0 8
|
1 2 3
| var a = 10; var b = 2; print(a ^ b);
|
计算机中可以用来取反色
移位运算符
<<
左移
1 2 3 4
| 0 0 0 1 1 二进制 0 0 1 0 左移一位 2 0 1 0 0 左移一位 4 1 0 0 0 左移一位 8
|
向左移动一位
1 2
| var a = 1 << 1; print(a);
|
>>
右移
1 2 3 4
| 1 0 0 0 8 二进制 0 1 0 0 右移一位 4 0 0 1 0 右移一位 2 0 0 0 1 右移一位 1
|
向右移动一位
1 2
| var a = 8 >> 1; print(a);
|
代码
参考
© 猫哥
https://ducafecat.tech
邮箱 ducafecat@gmail.com / 微信 ducafecat / 留言板 disqus