由 siggle(~) 表示的 INTERCAL 选择运算符采用一组位并将它们压缩到单词的一端。
THE INTERCAL PROGRAMING LANGUAGE REVISED REFERENCE MANUAL 第 3.4.1 节指出:
选择运算符从第一个操作数中获取与第二个操作数中的 1 相对应的任何位,并将这些位打包到结果的右侧。在选择发生之前,两个操作数都在左侧自动填充 0 到 32 位,因此变量类型不受限制。如果选择超过 16 位,则结果为 32 位值,否则为 16 位值。例如#179~#201(二进制值10110011~11001001)从第一个参数中选择倒数第8、第7、第4和第1个,即1001,它=9。但是#201~#179从二进制中选择11001001 倒数第 8、第 6、第 5、第 2 和第 1 个,给出 10001 = 17。#179~#179 的值为 31,而#201~#201 的值为 15。
是否有一种标准方法可以在 INTERCAL 或任何其他语言中反转此操作?
逆有名字吗?