# 数值
# 数值类型
# int
整数类型,其取值通常位于-253和253之间
int class (opens new window)
int a = 123;
1
# double
64-bit (双精度) 浮点数
double class (opens new window)
double a = 1.1;
1
# num
int 和 double 都是 num 的子类
num class (opens new window)
num a = 1;
num b = 1.1;
1
2
2
# 十进制、十六进制
int a = 1001; // 十进制
int b = 0xf; // 十六进制 - 15
String toTen = b.toRadixString(10); // 将十六进制转换为十进制
print(toTen); // 输出 15
1
2
3
4
5
2
3
4
5
# 科学计数法
num a = 2e3;
print(a); // 输出 2000
1
2
2
# 数值转换
字符串转数字
int a = int.parse("123");
double b = double.parse('1.223');
print('$a, $b'); // 输出 123, 1.223
1
2
3
4
2
3
4
数字转字符串
String a = 123.toString();
String b = 1.223.toString();
print('$a, $b'); // 输出 123, 1.223
1
2
3
4
2
3
4
double -> int
double a = 1.8;
int b = a.toInt();
print(b); // 输出 1
1
2
3
4
2
3
4
# 位运算
二进码十进数 8421 码 (opens new window)
# & 位与运算
同时为1才是1
二进制 十进制
1 0 1 0 10
0 0 1 0 2
--------
0 0 1 0 2
var a = 10;
var b = 2;
print(a & b); // 输出 2
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# | 位或运算
有一个1就是1
二进制 十进制
1 0 1 0 10
0 0 1 0 2
--------
1 0 1 0 10
var a = 10;
var b = 2;
print(a | b); // 输出 10
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# ~ 位非运算
二进制数逐位进行逻辑非运算
0 1 0 0 1 最高位代表正负 0非负数,1负数
0 0 1 1 0 补码
1 1 0 0 1 取反
1 1 0 1 0 加1
--------
1 1 0 1 0 -10
print(~9); // 输出 -10
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# ^ 异或
不相同的才出 1
1 0 1 0 10
0 0 1 0 2
--------
1 0 0 0 8
print(10 ^ 2); // 输出 8
1
2
3
4
5
6
2
3
4
5
6
计算机中可以用来取反色
# << 左移运算符
进制向左移N位数
0 0 0 1 1 二进制
0 0 1 0 左移一位 2
0 1 0 0 左移二位 4
1 0 0 0 左移三位 8
print( 1 << 1 ); // 输出2
print( 1 << 2 ); // 输出4
print( 1 << 3 ); // 输出8
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# >> 右移运算符
进制向左移N位数
1 0 0 0 8 二进制
0 1 0 0 右移一位 4
0 0 1 0 右移两位 2
0 0 0 1 右移三位 1
print( 8 >> 1 ); // 输出8
print( 8 >> 2 ); // 输出4
print( 8 >> 3 ); // 输出2
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8