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