4.5位操作

Octave提供了许多函数,用于按位操作数值。设置和获取单个位值的基本函数如下位组比特.

 
: B = bitset (A, n)
: B = bitset (A, n, val)

在位置设置或重置位n中的无符号整数的A.

最低有效位为n1.val= 0重置位和val1.设置位。如果没有val如果指定,则默认为1(设置位)。所有输入必须具有相同的大小或标量。

示例1:设置多个位

x=位集(1,3:5)⇒ x=5 9 12月17日(x)⇒     00101     01001     10001

示例2:重置和设置位

x=位集([15 14],1,[0 1])⇒ x=14 15

详见: 比特和, bitor, 按位异或, 比特, bitcmp, 位移, intmax, 燧石.

 
: b = bitget (A, n)

返回位置处的位值n中的无符号整数的A.

最低有效位为n1.

bitget(100,8:-1:1)⇒ 0  1  1  0  0  1  0  0

详见: 比特和, bitor, 按位异或, 位组, bitcmp, 位移, intmax, 燧石.

Octave的所有位运算的参数都可以是标量或数组,除了bitcmp谁的k参数必须上升。在多个参数是数组的情况下,所有参数都必须具有相同的形状,并且按位运算符分别应用于参数的每个元素。如果至少有一个参数是标量,一个是数组,则标量参数是重复的。因此

bitget(100,8:-1:1)

与相同

bitget(100*ones(1,8),8:-1:1)

需要注意的是,传递给Octave的位操作函数的所有值都被视为整数。因此,即使的示例位组以上通过浮点值10,它被视为位[1, 0, 1, 0]而不是的本机浮点格式表示的比特10.

从于可以用数字表示的最大值对于位操作很重要,特别是在形成掩码时,Octave提供了两个实用函数:燧石对于浮点整数,以及intmax对于整数对象(uint8, int64

Octave还包括基本的按位运算符“and”、“or”和“exclusive or”。

 
: z = bitand (x, y)

返回非负整数的按位AND。

x, y必须在[0,intmax]范围内

详见: bitor, 按位异或, 位组, 比特, bitcmp, 位移, intmax, 燧石.

 
: z = bitor (x, y)

返回非负整数的按位“或xy.

详见: bitor, 按位异或, 位组, 比特, bitcmp, 位移, intmax, 燧石.

 
: z = bitxor (x, y)

返回非负整数的按位XORxy.

详见: 比特和, bitor, 位组, 比特, bitcmp, 位移, intmax, 燧石.

按位“not”运算符是一元运算符,用于对值的每个位执行逻辑负性。为了使其有意义,必须定义对其求反值的掩码。Octave的“按位”not“运算符是bitcmp.

 
: C = bitcmp (A, k)

返回k-中整数的位补码A.

如果k被省略k=log2(flintmax)+1是假定的。

位cmp(7,4)⇒ 8dec2英寸(11)⇒ 1011dec2bin(位cmp(11,6))⇒ 110100

详见: 比特和, bitor, 按位异或, 位组, 比特, bitcmp, 位移, 燧石.

Octave还包括按位左移和右移值的能力。

 
: B = bitshift (A, k)
: B = bitshift (A, k, n)

返回ak的位偏移n-中的数字无符号整数A.

一个积极的k导致左移;右移的负值。

如果n则默认为64。n必须在[1,64]的范围内。

位移(眼(3),1)⇒
2 0 00 2 00 0 2
位移(10,[-2,-1,0,1,2])⇒ 2   5  10  20  40

详见: 比特和, bitor, 按位异或, 位组, 比特, bitcmp, intmax, 燧石.

从值的任一端移出的位将丢失。Octaveaso还使用算术移位,其中值的符号位在右移期间为kept。例如

位移(-10,-1)⇒ -5位移位(int8(-1),-1)⇒ -1.

请注意位移(int8(-1),-1)-1从于的位表示-1在中int8数据类型为[1, 1,1, 1, 1, 1, 1, 1].


版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号