程序中的比较 *** 作符是什么呢?

程序中的比较 *** 作符是什么呢?,第1张

你好,比较 *** 作费就是两个等式之间的比较,比如等于 *** 作 (==)先比较 *** 作数的类型

 1.如果类型不同,结果就是 false。 否则,继续比较值。 字符串按一般的方式比较。 数字遵循二元 *** 作的规则: 如果两个 *** 作数都是整数, 它们按整数比较; 否则,它们先转换为浮点数,然后再做比较。

2.表,用户数据,以及线程都按引用比较: 只有两者引用同一个对象时才认为它们相等。 每次你创建一个新对象(一张表,一个用户数据,或一个线程), 新对象都一定和已有且存在的对象不同。 相同引用的闭包一定相等。 有任何可察觉的差异(不同的行为,不同的定义)一定不等。

3.你可以通过使用 "eq" 元方法 来改变 Lua 比较表和用户数据时的方式。

等于 *** 作不会将字符串转换为数字,反之亦然。 即,"0"==0 结果为 false, 且 t[0] 与 t["0"] 指代着表中的不同项。

3.~= *** 作完全等价于 (==) *** 作的反值。

大小比较 *** 作以以下方式进行。 如果参数都是数字, 它们按二元 *** 作的常规进行。 否则,如果两个参数都是字符串, 它们的值按当前的区域设置来比较。 再则,Lua 就试着调用 "lt" 或是 "le" 元方法 。 a >b 的比较被转译为 b <a, a >= b 被转译为 b <= a。

中的逻辑 *** 作符有 and, or,以及 not。 和控制结构一样, 所有的逻辑 *** 作符把 false 和 nil 都作为假, 而其它的一切都当作真。

4.取反 *** 作 not 总是返回 false 或 true 中的一个。 与 *** 作符 and 在第一个参数为 false 或 nil 时 返回这第一个参数; 否则,and 返回第二个参数。 或 *** 作符 or 在第一个参数不为 nil 也不为 false 时, 返回这第一个参数,否则返回第二个参数。 and 和 or 都遵循短路规则; 也就是说,第二个 *** 作数只在需要的时候去求值。

5.你可以通过使用 "eq" 元方法 来改变 Lua 比较表和用户数据时的方式。

等于 *** 作不会将字符串转换为数字,反之亦然。 即,"0"==0 结果为 false, 且 t[0] 与 t["0"] 指代着表中的不同项。

6.~= *** 作完全等价于 (==) *** 作的反值。

大小比较 *** 作以以下方式进行。 如果参数都是数字, 它们按二元 *** 作的常规进行。 否则,如果两个参数都是字符串, 它们的值按当前的区域设置来比较。 再则,Lua 就试着调用 "lt" 或是 "le" 元方法 。 a >b 的比较被转译为 b <a, a >= b 被转译为 b <= a。

7.中的逻辑 *** 作符有 and, or,以及 not。 和控制结构一样, 所有的逻辑 *** 作符把 false 和 nil 都作为假, 而其它的一切都当作真。

希望能帮到你,谢谢!

取反,是Java使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数为1。

NOT,是汇编指令里逻辑运算符号:NOT表示取反的意思。

补码的规定如下:

对正数来说,最高位为0,其余各位代表数值本身(以二进制表示),如+42的补码为00101010。

对负数而言,把该数绝对值的补码按位取反,然后对整个数加1,即得该数的补码。

如-42的补码为11010110(00101010按位取反11010101+1即11010110)。

用补码来表示数,0的补码是单一的,都为00000000。(而在原码,反码表示中,+0和-0的表示是不单一的,可参见相应的书籍)。

而且可以用111111表示-1的补(这也是补码与原码和反码的区别)。

扩展资料:

运算方法:

1、正数取反:

先将初始数值转换成二进制数,再对二进制数的每一位(包括第一位的符号位)进行运算:

即将0变为1、将1变为0。得到的是最终结果的补码,要转换为最终结果的原码则需再次取补码,就能得到计算结果。

2、负数取反:

先将初始数值转换成二进制数,再取得二进制数的补码,之后对补码的每一位(包括第一位的符号位)进行运算:即将0变为1、将1变为0。

得到的是最终结果的补码(到达这一步后所得的二进制数为正数,由于正数的原码、反码、补码相同,后面的运算可以忽略。

视此步得到的为最终结果的二进制数),要转换为最终结果的原码则需再次取补码,就能得到计算结果。

常见相关指令:

AND 与运算

or 或运算

XOR 异或运算

NOT 取反

TEST 测试(两 *** 作数作与运算,仅修改标志位,不回送结果)

SHL 逻辑左移

SAL 算术左移(=SHL)

SHR 逻辑右移( 每位右移, 低位进 CF, 高位补 0)

SAR 算术右移(每位右移, 低位进 CF, 高位不变)

ROL 循环左移

ROR 循环右移

RCL 通过进位的循环左移

RCR 通过进位的循环右移

参考资料:

百度百科-取反

百度百科-汇编指令


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/10964791.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-12
下一篇2023-05-12

发表评论

登录后才能评论

评论列表(0条)

    保存