Octave提供了许多函数,用于按位操作数值。设置和获取单个位值的基本函数如下bitset
和bitget
.
B =
bitset (A, n)
¶B =
bitset (A, n, val)
¶在位置设置或重置位n中的无符号整数的A.
最低有效位为n1.val= 0 重置位和val1. 设置位。如果没有val如果指定,则默认为1(设置位)。所有输入必须具有相同的大小或标量。
示例1:设置多个位
x = bitset (1, 3:5) ⇒ x = 5 9 17 dec2bin (x) ⇒ 00101 01001 10001
示例2:重置和设置位
x = bitset ([15 14], 1, [0 1]) ⇒ x = 14 15
详见: bitand, bitor, bitxor, bitget, bitcmp, bitshift, intmax, flintmax.
b =
bitget (A, n)
¶返回位置处的位值n中的无符号整数的A.
最低有效位为n1.
bitget (100, 8:-1:1) ⇒ 0 1 1 0 0 1 0 0
详见: bitand, bitor, bitxor, bitset, bitcmp, bitshift, intmax, flintmax.
Octave的所有位运算的参数都可以是标量或数组,除了bitcmp
谁的k参数必须上升。在多个参数是数组的情况下,所有参数都必须具有相同的形状,并且按位运算符分别应用于参数的每个元素。如果至少有一个参数是标量,一个是数组,则标量参数是重复的。因此
bitget (100, 8:-1:1)
与相同
bitget (100 * ones (1, 8), 8:-1:1)
需要注意的是,传递给Octave的位操作函数的所有值都被视为整数。因此,即使的示例bitset
以上通过浮点值10
,它被视为位[1, 0, 1, 0]
而不是的本机浮点格式表示的比特10
.
因为可以用数字表示的最大值对于位操作很重要,特别是在形成掩码时,Octave提供了两个实用函数:flintmax
对于浮点整数,以及intmax
对于整数对象(uint8
, int64
等
Octave还包括基本的按位运算符“and”、“or”和“exclusive or”。
z =
bitand (x, y)
¶返回非负整数的按位AND。
x, y必须在[0,intmax]范围内
详见: bitor, bitxor, bitset, bitget, bitcmp, bitshift, intmax, flintmax.
z =
bitor (x, y)
¶返回非负整数的按位“或x和y.
详见: bitor, bitxor, bitset, bitget, bitcmp, bitshift, intmax, flintmax.
z =
bitxor (x, y)
¶返回非负整数的按位XORx和y.
详见: bitand, bitor, bitset, bitget, bitcmp, bitshift, intmax, flintmax.
按位“not”运算符是一元运算符,用于对值的每个位执行逻辑负性。为了使其有意义,必须定义对其求反值的掩码。Octave的“按位”not“运算符是bitcmp
.
C =
bitcmp (A, k)
¶返回k-中整数的位补码A.
如果k被省略k = log2 (flintmax) + 1
是假定的。
bitcmp (7,4) ⇒ 8 dec2bin (11) ⇒ 1011 dec2bin (bitcmp (11, 6)) ⇒ 110100
详见: bitand, bitor, bitxor, bitset, bitget, bitcmp, bitshift, flintmax.
Octave还包括按位左移和右移值的能力。
B =
bitshift (A, k)
¶B =
bitshift (A, k, n)
¶返回ak的位偏移n-中的数字无符号整数A.
一个正的k导致左移;右移的负值。
如果n则默认为64。n必须在[1,64]的范围内。
bitshift (eye (3), 1) ⇒
2 0 0 0 2 0 0 0 2
bitshift (10, [-2, -1, 0, 1, 2]) ⇒ 2 5 10 20 40
详见: bitand, bitor, bitxor, bitset, bitget, bitcmp, intmax, flintmax.
从值的任一端移出的位将丢失。Octaveaso还使用算术移位,其中值的符号位在右移期间为kept。例如
bitshift (-10, -1) ⇒ -5 bitshift (int8 (-1), -1) ⇒ -1
请注意bitshift (int8 (-1), -1)
是-1
因为的位表示-1
在中int8
数据类型为[1, 1,
1, 1, 1, 1, 1, 1]
.
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2