鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

基础运算

当前Hydra语言支持基础运算如表1所示。

表1 基础运算类型

运算符

说明

整数运算:正号(+)、负号(-)、按位取反(~)

仅支持位宽<=32的整型。

int<32> a = 32w1;
int<32> b;
b = +a;  // 正号
b = -a;  // 负号
b = ~a;  // 按位取反

算术运算:加法(+)、减法(-)、乘法(*)、除法(/)、求余(%)

仅支持位宽<=32的整型。

bit<32> a = 32w1;
bit<32> b = 32w2;
bit<32> c;
c = a + b;  // 加法
c = a - b;  // 减法
c = a * b;  // 乘法
c = a / b;  // 除法
c = a % b   // 求余

移位运算:左移(<<)、右移(>>)

仅支持位宽<=32的整型。

bit<32> a = 32w1;
bit<32> b = 32w2;
bit<32> c;
c = a << 2w2;  // 左移
c = a >> 2w2;  // 右移

位运算:按位与(&)、按位或(|)、按位异或(^)

仅支持位宽<=32的整型。

bit<32> a = 32w1;
bit<32> b = 32w2;
bit<32> c;
c = a & b;  // 按位与
c = a | b;  // 按位或
c = a ^ b;  // 按位异或

比较运算:小于(<)、小于等于(<=)、大于(>)、大于等于(>=)、等于(==)、不等于(!=)

仅支持位宽<=32的整型,返回值为bool值。

bit<32> a = 32w1;
bit<32> b = 32w2;
bool d;
d = a < b;   // 小于
d = a <= b;  // 小于等于
d = a > b;   // 大于
d = a >= b;  // 大于等于
d = a == b;  // 等于
d = a != b;  // 不等于

逻辑运算:与(&&)、或(||)、非(!)

参与逻辑运算的变量必须是bool值。

bool d;
d = true && false;  // 与
d = true || false;  // 或
d = !true;          // 非