Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改Julia中的位状态_Julia - Fatal编程技术网

更改Julia中的位状态

更改Julia中的位状态,julia,Julia,在Julia语言中,如何设置、清除和反转单个位?我希望你不要把这个问题考虑范围太广或者太宽泛。如果是这样,请发表评论,而不是投反对票。Julia Lang doc的这段话: 目前,仅支持8位的倍数大小。 因此,布尔值,尽管它们实际上只需要一个 位,不能声明为小于8位 首先,我们可以看看变量的二进制表示形式,如下所示: julia> bits(Int(10)) "00000000000000000000000000001010" 其次,可以直接使用二进制形式创建字节值: julia>

在Julia语言中,如何设置、清除和反转单个位?我希望你不要把这个问题考虑范围太广或者太宽泛。如果是这样,请发表评论,而不是投反对票。

Julia Lang doc的这段话:

目前,仅支持8位的倍数大小。 因此,布尔值,尽管它们实际上只需要一个 位,不能声明为小于8位

首先,我们可以看看变量的二进制表示形式,如下所示:

julia> bits(Int(10)) 
"00000000000000000000000000001010"
其次,可以直接使用二进制形式创建字节值:

julia> val=0b100
0x04

julia> typeof(val)
UInt8
最后,更改位值的最佳方法是对其字节值执行正确的二进制操作:

julia> val | 0b10 # set 2nd bit
0x06

julia> bits(ans)
"00000110"

julia> val & 0b11111011 # clear 3nd bit
0x00

我假设您想要清除、设置和检查字节中特定位的状态

其中:

  • N
    表示有问题的整数和
  • n
    是相关位的编号(即
    n
    -第位)和
  • LSB是第1位

  • 设置第n位:
    n |=2^(n-1)

  • 清除第n位:
    n&=~(2^(n-1))

  • 通过复制和移位检查位的状态:
    (N>>(N-1))&1!=0

  • 使用位掩码检查位的状态:
    mask=2^(n-1);N&mask!=遮罩

  • 反转/切换/反转第n位,使用:
    n⊻= 2^(n-1)
    。也可以使用
    xor
    功能


到目前为止您尝试了什么吗?将
2^n
更改为
1
bitstring
现在应该使用,而不是
bits