Aca*_*mia 6 arrays string binary matlab
它是否有更好的方法来反转X的元素?
>> X = dec2bin(10)
X = 1010
Run Code Online (Sandbox Code Playgroud)
我这样做了:
x(i) = num2str(1-str2num(x(i)))
Run Code Online (Sandbox Code Playgroud)
And*_*ein 12
如果我理解正确,并且您想将一位设置为1则使用 bitset
bitset( x, bitNumber)
Run Code Online (Sandbox Code Playgroud)
如果你想翻转位从0到1,副verca,使用BITXOR
num = bin2dec('101110');
bitNum = 1;
res = bitxor(num, 2^(bitNum-1));
disp(dec2bin(res));
Run Code Online (Sandbox Code Playgroud)
它更好,因为您不需要将数字转换为char.
如果你想翻转一点数值num
而不先将它转换为'0'
和的字符数组'1'
,那么你可以使用像BITXOR,BITGET和BITSET这样的函数(正如Andrey所提到的):
num = bitxor(num, 4); %# Flip the bit in the 4's place (i.e. bit 3)
%# Or ...
num = bitset(num, 3, ~bitget(num, 3)); %# Flip bit 3
Run Code Online (Sandbox Code Playgroud)
但是,如果你不想要的字符数组进行操作,你也可以做到这一点很奇怪的事情:
X(i) = 'a' - X(i);
%# Or ...
X(i) = 97 - X(i);
Run Code Online (Sandbox Code Playgroud)
此工作,因为该字符 'a'
并X(i)
执行数学运算之前首先被转换为它们的等效的Unicode UTF-16的数值.由于数值为'a'
97,因此从中减去'0'
(数值48)或'1'
(数值49)'a'
将导致另一个的数值.然后,在将等式右侧的结果数值放回字符数组中时,将其转换回字符X
.