当前位置: 首页 > 面试题库 >

您如何在Go中设置和清除一点?

商开济
2023-03-14
问题内容

在Golang中,您如何设置和清除整数的各个位?例如,行为如下:

 clearBit(129, 7) // returns 1
 setBit(1, 7)     // returns 129

问题答案:

这是一个设置功能。首先,将数字1移至整数中指定的空格数(这样它将变为0010、0100等)。然后将其与原始输入进行“或”运算。这使其他位不受影响,但始终将目标位设置为1。

// Sets the bit at pos in the integer n.
func setBit(n int, pos uint) int {
    n |= (1 << pos)
    return n
}

这是一个清除功能。首先将数字1移至整数中指定的空格数(这样它将变为0010、0100等)。然后使用^操作员翻转掩码中的每一位(因此0010变为1101)。然后使用按位AND,它不会触及1所代表的数字AND,但会取消设置为0的掩码中的值。

// Clears the bit at pos in n.
func clearBit(n int, pos uint) int {
    mask := ^(1 << pos)
    n &= mask
    return n
}

最后,这是一个检查是否设置了位的功能。将数字1移位指定的空格数(使其变为0010、0100等),然后将其与目标数字进行“与”运算。如果结果数大于0(将为1、2、4、8等),则该位置1。

func hasBit(n int, pos uint) bool {
    val := n & (1 << pos)
    return (val > 0)
}


 类似资料:
  • 问题内容: 在Go中清除切片的适当方法是什么? 这是我在go论坛中找到的内容: 这样对吗? 为了澄清起见,清除了缓冲区,以便可以重用它。 一个示例是bytes包中的Buffer.Truncate函数。 请注意,Reset只是调用Truncate(0)。因此看来,在这种情况下,第70行将评估:b.buf = b.buf [0:0] http://golang.org/src/pkg/bytes/bu

  • 问题内容: 我在寻找类似c ++函数 的原始类型。 还是应该只创建一个新地图? 更新:谢谢您的回答。通过查看答案,我刚刚意识到有时创建新地图可能会导致某些我们不希望出现的不一致情况。考虑以下示例: 我的意思是,这仍然与c ++中的功能不同,后者将清除对象中的内容。 问题答案: 您可能应该只创建一个新地图。没有真正的理由去尝试清除现有的代码,除非同一段映射被多个代码引用,并且一个代码段明确需要清除值

  • 问题内容: 我已在Java控制台上显示了使用Webstart启动的应用程序的输出消息。有没有一种方法可以清除代码中的控制台消息,而不是由用户手动清除消息? 这些消息以大约每秒1000的速度打印,并且似乎使用了过多的内存,我本可以停止打印到控制台,但要求始终保持打印。 问题答案: 您将无法清除该控制台,除非您在该控制台的类上找到了一些句柄(我怀疑您可以访问该句柄)。 您有一个不可避免的要求,即用户需

  • 问题内容: 在Java中“清空” a的正确方法是什么,以便无需创建新的方法就可以重用?无论是也似乎收到预期的效果。 问题答案: 打电话怎么样?

  • 问题内容: 运行GO脚本时,Golang中是否有任何标准方法可以清除终端屏幕?还是我必须使用其他一些库? 问题答案: 注意: 运行命令以清除屏幕不是安全的方法。在这里也检查其他答案。 您必须为每个不同的OS定义一个清晰的方法,像这样。当用户的操作系统不受支持时,它会慌乱 (命令执行来自@merosss的答案)

  • 如何清除NPM以前的ssl代理设置?嗯,我搜索了很多,但我得到的所有帖子主要是关于如何在公司网络中代理。 第一个命令通过,而第二个命令警告: 是否可以忽略警告,并且我已成功清除代理设置?