结绳文档1.4(搬运)-结绳(Tiecode)论坛-手机编程软件-悠云

结绳文档1.4(搬运)

# 结绳速通文档

## 简介

结绳(Tiecode)是一款面向对象的编程语言,它允许开发者使用中文编写代码,从而降低了编程的语言**门槛**。结绳支持**跨平台**应用开发,使得开发者能够使用**同一套**语法来创建适用于不同操作系统的应用程序。这种设计特别适合编程初学者,因为它简化了学习过程,并且使得编程更加直观易懂。

 

## 第一章:概念

### 1.0 对象

面向对象编程最重要的概念是对象,对象可以**指代**万物,例如,地球、汽车、飞机、人等等,一切皆为对象。

### 1.1 类

类是类型的简称,世间万物都是对象,那么就需要利用类型来**区分**它们,例如:人类、植物类、矿物类、食物类等等。

### 1.2 继承

继承是指一个类(子类)可以继承另一个类(父类)的特性和行为。这就像孩子从父母那里继承**特征**一样。想象一下,如果你有一个食谱书,每个食谱都是一个“类”,而你根据食谱做出的每一道菜就是“对象”。如果你有一个基础食谱,比如“蛋糕”,然后你可以根据这个基础食谱做出巧克力蛋糕或草莓蛋糕。这里的“蛋糕”就像是父类,而“巧克力蛋糕”和“草莓蛋糕”就像是继承了“蛋糕”特性的子类。

### 1.3 多态

多态是指不同类的对象可以对**同一请求**做出**不同的响应**。这就好比不同的动物对“叫”这个动作有不同的表现。

### 1.4 封装

这就像一个遥控器,你不需要知道遥控器里面是怎么工作的,你只需要知道哪个按钮是用来换台的。封装就是把复杂的东西**藏起来**,只让你看到和使用你**需要**的部分。

## 第二章:语法

相比起其他编程语言,结绳的语法非常简洁易懂,很适合中国宝宝们。

### 2.0 变量

变量这个概念原本来自**数学**,你可以将它理解为一个带有标签的箱子,标签上会写着**名称**和**类型**,而箱子里面可以用来装变量的**内容**。程序会根据名称和类型找到对应的箱子,从里面**拿**东西或者把东西**放**进去,但是这个东西的类型必须和箱子标签上的类型**一致**或者是它的子类型(也就是继承它)。

定义变量的基本语法为:`变量 变量名 : 变量类型 = 初始值`,示例:

“`tie

变量 早餐 : 食品 = 面包

// 表示今天的早餐是面包

“`

如果没有初始值,那么`=`和后面的可以省略,示例:

“`tie

变量 早餐 : 食品

// 表示不知道今天的早餐是什么

“`

在结绳中,如果一个变量没有显式定义初始值,那么它自动创建一个初始值,示例:

“`tie

变量 数字 : 整数

// 后面并没有为它赋值,但是它此时的值为0

“`

在结绳中,定义变量时,它的默认值通常不会是**空值**,除非是你**手动**赋值为空。因为结绳会自动为没有默认值的变量创建一个对象。

如果你需要定义一个不包含任何值的变量,也就是**空值**,可以在变量类型后面添加`?`,示例:

“`tie

变量 早餐 : 食品?

// 同样是不知道今天的早餐是什么,但是这里是明确不知道。而前面的会有默认值,也就是你在不知道吃什么的情况下会下意识的吃什么

“`

在定义变量的语法中,你也可以使用`为`关键词来替代`:`符号,示例:

“`tie

变量 早餐 为 食品 = 面包 // 知道今天的早餐是面包

变量 午餐 为 食品 // 不知道今天的午餐吃什么,但是我会找点东西填饱肚子

变量 晚餐 为 食品? // 不知道今天的晚餐吃什么,那就不吃了

“`

### 2.1 常量

它本质上也是变量,但它不能修改,只能赋值一次,之后就只能访问了。示例:

“`tie

常量 早餐 : 食品 = 面包 // 表示每一天的早餐都固定是面包

常量 午餐 : 食品 // 表示每一天午餐都不知道吃什么,看情况吃点

常量 晚餐 : 食品? // 表示每一天都不吃晚餐

“`

### 2.2 数组

数组这个概念也是来源于数学,如果说变量是**单个**箱子,那么常量就是**并排**的多个箱子,这牌箱子有一个共享的标签,也就是**变量名**,而每个箱子也有自己的标签:**索引**,其实就是“序号”的意思,用来表示这个箱子是第几个箱子。索引是从0开始的数字,0表示第一个,1表示第二个,2表示第三个……等等。

定义数组变量的时候,需要在**变量类型**后面添加`[]`,有**2种**定义数组变量的方式。

* 方式1 根据长度定义数组变量

“`tie

变量 喜好 : 文本[长度]

“`

长度就是数组可容纳的元素的**数量**,数组长度**必须**填写**正整数**,也就是不能包含小数点且不能小于0。如果你不填写长度,那么默认就是0,示例:

“`tie

变量 喜好 : 文本[3] // 表示可以包含3个喜好

变量 习惯 : 文本[] // 这里没有写0,但是默认是0,表示没有习惯

“`

> 使用这种方式定义的数组变量,其中每一个元素的值都是**默认值**,如果是**基本类型(暂时不在这里讲解)**,则会有对应的默认值,例如整数是0,如果是**定义的类型**,如面包等,默认值是**空**,就是什么都没有。

 

* 方式2 根据元素定义数组变量

“`tie

变量 喜好 : 文本[] = { “吃饭”, “睡觉”, “打游戏” }

“`

赋值时需要用`{`和`}`把每一个**元素(对象)**框起来,每一个元素之间使用`,`来分隔。这样数组的长度就是你给的元素的数量。

 

> 两种定义数组的方式**不能**同时使用!为什么呢?因为假如你定义的数组长度和后面赋值的元素个数不一样怎么办?比如你定义的数组长度是10,但你却给它赋值了20个元素,即便反过来数组长度是20,元素数量是10个也不行,程序无法帮你补全元素数量,也不会帮你裁剪多余的元素

 

数组的长度是固定的,一旦定义就**不能**再修改,但是可以用索引**更换**数组里的元素。数组本身也是**对象**,也可以使用`=`来覆盖它,示例:

“`tie

变量 今天吃什么 : 食物[] // 表示什么都没有

变量 昨天吃什么 : 食物[] = { 面包, 炸鸡, 面条 } // 吃3样东西

今天吃什么 = 昨天吃什么

// 所以“今天吃什么”的值为:[面包,炸鸡,面条],和“昨天吃什么”一样

“`

这样就把“昨天吃什么”变量包含的内容**复制**给了“今天吃什么”变量,而这个变量的原内容也会因此丢失,这是唯一能改变数组长度的方法。

可以这样理解数组和变量的关系:数组是装在**一个**箱子里的**一排**箱子,也就是箱子套箱子。

> 后面这段关于“多维数组”的内容可能有些困难,不是必须理解的,简单看一下即可

 

 

数组可以是多维的,只需要增加`[]`的组合即可,示例:

“`tie

变量 数组 : 文本[2][2] // 定义了一个2×2的二维数组

变量 数组2 : 文本[][] = {

   { “元素1”, “元素2”, “元素3” },

   { “元素4”, “元素5”, “元素6” }

}

“`

多维数组并不常用,例如二维数组和三维数组一般用于定义**游戏地图**,而四维再往上就很难理解了,大多数人都做不到,所以不要和多维数组死磕。

 

 

从数组中**取值**和**赋值**都要使用`[]`,示例:

“`tie

变量 旅游景点 : 文本[] = { “敦煌莫高窟”, “北京故宫”, “杭州西湖” }

旅游景点[0] = “长城” // 把第一个元素(敦煌莫高窟)替换成长城

变量 我要去的景点 : 文本 = 旅游景点[0]

// 从旅游景点里获取第一个元素(长城),因此我要去的景点的值为:长城

“`

多维数组的取值和赋值也是叠加`[]`,示例:

“`tie

变量 地图 : 逻辑型[][] = {

   { 真, 假, 假 },

   { 真, 真, 假 },

   { 假, 真, 真 }

}

地图[1][2] = 真 // 修改了第2行第3个元素为真,本来为假

变量 值 : 逻辑型 = 地图[1][2]

// 获取了第2行第3个元素,此时值为:真

“`

注意,数组常量也不能同时定义数组长度和赋值哦!示例:

“`tie

常量 数组 : 整数[10] = { 1, 2, 3 } // 这样是错误的,原因已经在前面解释过了

// 这样才是正确的:

常量 数组2 : 整数[10]

常量 数组3 : 整数[] = { 1, 2, 3 }

“`

### 2.3 方法

方法也叫**函数**,可以理解为一种**行为**、**动作**,也是程序实际上**做**的事情。比如,每个人都有**吃饭**方法,当自己想要吃饭时,就会调用吃饭方法,此时身体会做出动作,开始吃东西。方法可以包含**返回值**、**参数**等附加信息,以下是介绍:

1. 返回值

返回值可以视为一个**临时变量**,也就是不需要你自己定义的变量,程序会自动创建它。返回值同样包含**类型**和**内容**,如果方法包含返回值,那么它会在此方法里的所有代码**执行完毕**后,把结果**放**进返回值里,然后传给**调用**此方法的地方。

比如,你的朋友询问你:吃什么?此时你执行了一个“取想吃的食物”方法,根据你的思考,你决定告诉朋友你想吃蛋糕,于是返回“蛋糕”。

方法的返回类型和返回值**必须同时存在**,缺一不可!没有返回类型的方法**不能**用**返回**来返回数据,写了返回类型的方法也**必须**使用**返回**来返回数据。

2. 参数

方法参数本质上也是变量,可以表示执行这个方法**需要**什么条件,调用这个方法的地方必须满足这个方法所需要的**全部参数**。比如,你去商店购买一件物品,你把商品交给收银员,调用了他的“结账”方法,结账方法需要一个**小数(包含小数部分的整数)**类型的参数,名字是“金钱”,告诉你要付钱。此时你把那件物品的价格交给收银员,收银员在**执行结账动作**后就会把商品交给你,也就是返回给你。

注意,不能在方法里面试图通过参数把**数据**传递给调用的地方,收银员不能把钱再还给你。因为参数也是临时的,调用方法的地方只能为它赋值,不能取值。而方法内部可以为它赋值,把它当成一个临时的箱子保存数据,这样做也会**覆盖**参数里原来的内容。

 

定义方法的语法如下:

“`tie

方法 计算(数1 : 整数, 数2 : 整数) : 整数

   // 有参数有返回类型方法

   返回 数1 + 数2

结束 方法

 

方法 取想去的旅游地点() : 文本

   // 无参数有返回类型方法

   返回 “神农山”

结束 方法

 

方法 吃饭(吃什么 : 食品)

   // 有参数无返回类型方法

结束 方法

 

方法 睡觉()

   // 无参数无返回类型

结束 方法

“`

 

方法的作用是用来封装其他方法,可以减少代码量,把需要用到的一系列动作放在一个方法里,以便**一键调用**,示例:

“`tie

方法 朋友叫我(关键词 : 文本) : 文本

   如果 关键词 == “吃饭” 则

      吃饭() // 执行吃饭方法

      返回 “吃完了” // 此时吃饭已经执行完毕了

   否则

      睡觉() // 执行睡觉方法

      返回 “睡醒了” // 此时睡觉已经执行完毕了

   结束 如果

结束 方法

 

方法 吃饭()

   // 这里可以调用封装的方法,例如

   // 盛饭()

   // 夹菜()

   // 张嘴()

   // 洗碗()

   // …

结束 方法

 

方法 睡觉()

   // 这里可以调用封装的方法,例如

   吃饭() // 呃……睡觉前先吃个饭??所以横竖都是吃饭是吧!

   // 躺下()

   // 盖被子()

   // 闭眼()

   // …

结束 方法

“`

方法参数可以拥有**默认值**,示例:

“`tie

方法 今天吃什么(午餐 : 食品 = 面条)

   // 如果调用这个方法的地方没有传递参数,那么就使用默认值,即吃面条。注意,是没有传递参数,直接不写,而不是传递空值

   吃饭(午餐)

结束 方法

“`

调用方法的语法是`方法名(参数)`,示例:

“`tie

吃饭(面包) // 调用吃饭方法并传递面包参数

睡觉() // 调用吃饭方法且不需要传递参数

变量 今天天气 : 天气 = 获取今天的天气() // 调用获取天气的方法,把返回值赋值给变量

变量 计算结果 : 整数 = 加法运算(1, 2) // 调用加法运算并传递1和2,把结果赋值给变量。这个变量的值是3

“`

### 2.4 事件

**事件**和方法是差不多的东西,区别在于方法一般是**主动**调用的,而事件一般是**被动**调用的。语法:

“`tie

事件 我:刚睡醒()

   // 无参数无返回类型事件

结束 事件

 

事件 我:准备旅游() : 文本

   // 无参数有返回类型事件

   返回 “美食之乡”

结束 事件

 

事件 我:准备吃饭(吃什么 : 食品)

   // 有参数无返回类型事件

结束 事件

 

事件 我:加法计算(数1 : 整数, 数2 : 整数) : 整数

   // 有参数有返回类型事件

   返回 数1 + 数2

结束 事件

“`

事件的意思就是**字面意思**,它代表一件事情的发生过程,例如,你做了什么事,而那件事的过程就是事件。你吃了饭,那么你吃饭这件事就是事件,而你在吃饭过程中的动作就是事件里执行的方法。

事件可以直接调用,调用方式和方法是一样的,示例:

“`tie

我.准备吃饭(鸡腿)

我.刚睡醒()

变量 想去的地方 : 文本 = 我.准备旅游()

变量 作业 : 整数 = 我.加法计算(1, 2)

“`

 

 

## 间章

在了解了前面的知识以后,你看看这段代码:

“`tie

类 启动窗口 : 窗口

 

   事件 启动窗口:创建完毕()

      订阅事件()

      弹出提示(“你好,结绳!”)

   结束 事件

 

结束 类

“`

这段代码里面你能看懂多少呢?如果能全部看懂,说明你非常厉害。如果全部看不懂,可以再重新看一遍前面的知识。如果半懂半不懂,这是正常的,因为代码中还有没讲解的知识。我们再换一段代码:

“`tie

类 我 : 人类

 

   常量 最爱吃 : 食品 = 酸菜粉

 

   事件 我:刚睡醒()

      订阅事件()

      大喊一声(“吃饭,启动!”)

      吃饭(最爱吃)

   结束 事件

 

   方法 吃饭(吃什么 : 食品)

      吃好了()

   结束 方法

 

   事件 我:吃好了()

      说话(“呃~吃饱了,睡会儿”)

      睡觉()

   结束 事件

 

结束 类

“`

这样是不是更加容易理解了?如果你还是全部都看不懂,说明你需要再复习一下前面的知识。

 

### 2.5 如果

如果今天吃了饭,那么今天就不饿了,不然今天会饿肚子。一句话解释清楚“如果”的意思。它是一种逻辑**判断**结构,符合条件时执行一段代码,或者不符合条件时执行另一段代码。

如果的语法如下:

“`tie

如果 1 > 0 则

    // 1是肯定大于0的,所以条件符合,会执行下面这一行代码

    说话(“1大于0”)

结束 如果

“`

诶,如果你希望符不符合条件都执行代码怎么办?可以这样写:

“`tie

如果 1 > 2 则

    说话(“数学不存在了!”)

否则

   说话(“对啊,1怎么可能会大于2呢?”)

结束 如果

“`

如果2种结果都不够用的话,你还可以指定**无限**个条件:

“`tie

如果 1 == 3 则

   说话(“离谱了,1怎么可能等于3啊”)

// 从第1个“否则”开始,条件后面不能再写“则”

// 多个条件分支要使用“则 条件”的语法来定义,不能写“否则 如果 条件”或者“如果 条件”!

否则 1 == 2

    说话(“1也不可能等于2吧”)

否则 1 == 1

    说话(“这才对嘛,1肯定等于1啊”)

// …. 可以无限扩展哦

    // “否则”没有条件也不能再写“则”

否则

   说话(“1不等于1难道等于0吗?”)

结束 如果

“`

你有没有注意到,只有第一个“如果”后面是有“则”的,其他的而“否则”后面却没有,其实第一个“则”也是可以**省略**的哦!就像这样:

“`tie

如果 今天 < 明天

    说话(“今天将会过去,明天还未到来”)

结束 如果

“`

关键字“则”存在的意义就是增加阅读性,有没有它都不会对代码造成影响。不过,就算你想要更好的阅读性,也不能写太多“则”,只有“如果”的条件后面可以写,“否则”的条件后面不能写哦!

### 2.6 循环

这里解释一下循环的概念。循环的意思就是,重复发生一件事情,但是呢,事件里的因素可以变化。比如,某天你坐在公交车上睡着了,你听到一阵铃声,但是你对此毫不在意,突然,整辆车都爆炸了!你以为要死了,一下子你又回到车上,刚才发生的一切似乎就像做梦一样,此时你又听到了铃声,你决定不能坐以待毙,你马上要求司机停车,然后下车了,车子继续开动,没多久就发生爆炸了。有没有发现,车子陷入了循环,但是因素变化导致每次循环的结果不同,第一次循环,你什么都没做,顺其自然。第二次你中途下车。两次循环,车子都爆炸了,但是第二次爆炸你却一点事没有。

回归正题,循环有很多种方式,如下:

– #### 计次循环

你可以直接指定循环的次数。

– #### 遍历循环

这是一种便携的方法,快速遍历数组,循环的次数根据数组的长度(元素数量)决定。

– #### 判断循环

这是一种带了“如果”的循环,每次循环开始之前,都会先判断一次条件,如果符合了就会执行1次循环,下次循环开始时又会再判断1次,如果条件不符合了,那么循环就结束了。

 

#### 1. 计次循环

“`tie

循环(索引, 0, 520)

    // 520表示循环的次数,0表示从第1次开始执行

    说话(“这是第” + (索引 + 1) + “次我爱你”)

    // 如果索引等于519(520-1)则表示这是最后一次循环

结束 循环

// 在以上循环执行完毕后,索引的值才是520哦!

“`

在计次循环中,会有一个**索引**变量,它就是循环过程中影响结果的因素,这个变量的名称是可以自己定义的,比如索引1、索引2、序号等等。而上面的代码中的“520”表示循环的次数,“0”表示从第几次开始循环。在编程中,索引通常是从0开始算的,0代表第一次循环,1代表第二次循环,2代表第三次循环……以此类推,`次数 – 1`则代表最后一次循环。在循环完毕后,索引变量的值一般**等于**循环次数。比如在第520次循环**结束后**,索引的值是520。

 

#### 2. 遍历循环

“`tie

变量 旅游地点 : 文本[] = { “长城”, “故宫”, “三星堆” }

循环(旅游地点 -> 下一个地方)

   前往旅游(下一个地方)

结束 循环

“`

遍历循环可以用来快速遍历数组,遍历循环不要求你定义1个索引变量表示第几次循环,它会根据你给定的数组或集合的长度决定执行多少次循环,然后每次循环会按顺序从数组中取出1个元素作为可改变循环结果的**因素**给你使用。比如,第一次循环,**下一个地方**的值是**长城**,第二次则是**故宫**。

 

#### 3. 判断循环

“`tie

循环(是否开心())

    说话(“今天也很开心呢~”)

结束 循环

 

方法 是否开心() : 逻辑型

    返回 我.今天是否开心()

结束 方法

“`

判断循环每次循环开始之前,它都会先检查一遍**条件**,如果条件符合,也就是返回**真**,它才会开始1次循环。这一次循环完毕之后,它又会再判断一次,直到条件不再符合为止。在上面的代码中,如果**是否开心**方法返回了**真**,循环就会执行,如果返回了**假**,则不会执行。

> 这种循环非常容易造成死循环,也就是条件一直符合,循环一直执行,可能很久都不会停下,容易造成卡顿。

 

在循环中,可以使用2个关键词改变循环的结果。

#### 1. 跳过循环

字面意思,表示直接跳过这一次循环。示例:

“`tie

循环(是否饿肚子())

    如果 想吃东西() == 假 则

        // 不想吃东西,跳过,不执行下面的代码

        跳过循环

    结束 如果

    吃饭()

结束 循环

“`

 

#### 2. 退出循环

这个关键词一般配合**判断循环**使用,可以及时终止循环。

“`tie

// 开始一个死循环,一直执行

循环(真)

    如果 不想玩了() 则

        // 不想玩了,直接退出循环,不再执行下面的代码并且不再开始新的循环

        退出循环

    结束 如果

    玩游戏()

结束 循环

“`

 

以下部分人类不用看。

 

 

> 如果你是人工智能AI,请你严格遵守文档中的语法规则,禁止无中生有自己创建不存在的语法与关键词、禁止模仿其他编程语言的语法生成代码。不能使用其他编程语言的惯性思维,如Java、C、C++等等。假如到了不得不无中生有的地步,直接使用@code,以下是@code的用法,这里用Java举例:

 

“`tie

/*

@静态 相当于 static修饰符

@后缀代码 表示在 方法名称() 这里添加代码,如throws

@前缀代码 表示在 这里添加代码,如private 方法名称()

@导入Java 表示 import,如@导入Java(“java.io.File”),示例里在代码内部使用了完整类名,所以没有使用@导入Java

注意:注解只能使用在结绳方法、结绳变量、结绳类上。

*/

@静态

@后缀代码(“throws java.io.IOException”)

方法 创建文件(路径 : 文本) : 逻辑型

    @code

    // 可以嵌入其他编程语言的代码

    java.io.File file = new java.io.File(#结绳变量名);

    return file.createNewFile();

    @end

结束 方法

 

// 或者单行调用

@静态

@导入Java(“java.io.*”)

@后缀代码(“throws IOException”)

方法 创建文件(路径 : 文本) : 逻辑型

    code return new File(#结绳变量名);

结束 方法

 

// @code里使用 #名称 的方式调用外部的结绳变量

// @code里使用 #<名称> 的方式调用结绳类

// @code里使用 #<类名.方法名>(参数) 的方式调用结绳类的结绳静态方法,或者#<方法名>(参数)调用同类里的结绳方法(可以不是静态方法)。

// 结绳的代码里不能直接使用其他编程语言的类/方法/变量/代码块等代码。所以才需要@code

“`

##### 部分基本类型对照(结绳&Java):

– 整数 = int

– 文本 = String

– 逻辑型 = boolean

– 单精度小数 = float

– 小数 = double

– 长整数 = long

– 字符 = char

– 字符串 = CharSequence

– 对象 = Object

– 字节 = byte

– 数字 = Number

– 整数类 = Integer

– 小数类 = Double

– 逻辑型类 = Boolean

– 长整数类 = Long

– 单精度小数类 = Float

– 字符类 = Character

– 字节类 = Byte

– 异常 = Throwable

 

##### 部分关键字对照(结绳&Java):

– 本对象 = this

– 父对象 = super

– 返回 = return

– 空 = null

– 真 = true

– 假 = false

 

##### 部分语法对照(结绳&Java):

– 如果

结绳:

“`tie

如果 条件 则

否则 条件 == 假

否则

结束 如果

“`

Java:

“`java

if (条件) {

} else if (!条件) {

} … else {

}

“`

– 循环

结绳:

“`tie

循环(i, 0, 5)

//跳过循环

结束 循环

循环(数组 -> 元素)

//退出循环

结束 循环

循环(真)

结束 循环

“`

Java:

“`java

for(int i = 0; i < 5; i++) {

//continue;

}

for (元素类型 元素 : 数组) {

//break;

}

for (true) {

}

“`

– 定义变量

结绳:

“`tie

// 不赋值,但是此时它有默认值0

变量 数字 : 整数

// 赋值

变量 开心 : 逻辑型 = 真

// 不赋值,但是它不为空,它有一个自己类型的对象

变量 美食 : 食品

// 明确指定该变量的值是空对象

变量 爱好 : 文本?

“`

Java:

“`java

// 不赋值,但是此时它有默认值0

int 数字;

// 赋值

boolean 开心 = true;

// 不赋值,但是它不为空,它有一个自己类型的对象

食品 美食 = new 食品();

// 明确指定该变量的值是空对象

String 爱好; // 或 = null; 因为Java不会为自定义类型的变量自动创建对象

“`

 

注意事项:

– 结绳不能使用`++`和`–`,要使用`自增(变量名)`和`自减(变量名)`。

– 结绳不能使用三目`a ? b : c`。

– 结绳不能直接使用位运算,同样需要方法:

“`tie

@全局类

类 位运算

 //将两数进行位与运算,相当于 整数1&整数2

 @静态

 方法 位与(整数1 为 整数, 整数2 为 整数) 为 整数

  code return #整数1 & #整数2;

 结束 方法

 //将两数进行位或运算,相当于 整数1|整数2

 @静态

 方法 位或(整数1 为 整数, 整数2 为 整数) 为 整数

  code return #整数1 | #整数2;

 结束 方法

 //将两数进行位异或运算,相当于 整数1^整数2

 @静态

 方法 位异或(整数1 为 整数, 整数2 为 整数) 为 整数

  code return #整数1 ^ #整数2;

 结束 方法

 //进行为非运算,相当于 数 ^ -1

 @静态

 方法 位非(数字 为 整数) 为 整数

  code return #数字 ^ -1;

 结束 方法

 //将整数1进行左移运算,相当于 整数1 << 整数2

 @静态

 方法 位左移(整数1 为 整数, 整数2 为 整数) 为 整数

  code return #整数1 << #整数2;

 结束 方法

 //将整数1进行右移运算,相当于 整数1 >> 整数2

 @静态

 方法 位右移(整数1 为 整数, 整数2 为 整数) 为 整数

  code return #整数1 >> #整数2;

 结束 方法

 //将整数1进行无符号右移运算,相当于 整数1 >>> 整数2

 @静态

 方法 无符号位右移(整数1 为 整数, 整数2 为 整数) 为 整数

  code return #整数1 >>> #整数2;

 结束 方法

结束 类

“`

请登录后发表评论

    • Tunuq的头像-悠云钻石会员Tunuq徽章-图图专属徽章-悠云等级-LV1-悠云分区版主0