Rust 如何修改铁锈中给定位置的位值?
我可以用1替换该值,但不能用0替换。以下程序的输出为Rust 如何修改铁锈中给定位置的位值?,rust,Rust,我可以用1替换该值,但不能用0替换。以下程序的输出为0b11111111。理想情况下,它应该是0b11110000。请让我知道我错过了什么 use std::mem; fn main() { let a: u8 = 0b00001111; let b: u8 = 0b11111111; let c: u8 = 0b00000000; let length = mem::size_of_val(&a) * 8; let mut p : u8 = b
0b11111111
。理想情况下,它应该是0b11110000
。请让我知道我错过了什么
use std::mem;
fn main() {
let a: u8 = 0b00001111;
let b: u8 = 0b11111111;
let c: u8 = 0b00000000;
let length = mem::size_of_val(&a) * 8;
let mut p : u8 = b;
for n in 0..length {
if (a >> n & 1) == 0b1 {
let d = c >> n & 1;
p = p | (d << n);
}
}
println!("0b{:08b}", p);
}
使用std::mem;
fn main(){
设a:u8=0b00001111;
设b:u8=0b11111111;
设c:u8=0b00000000;
设长度=mem::值的大小(&a)*8;
设mut p:u8=b;
对于0.长度中的n{
如果(a>>n&1)==0b1{
设d=c>>n&1;
p=p |(d这不是锈病特有的
True | x => True
True & x => x
True ^ x =? ¬x
False | x => x
False & x => False
False ^ x => x
为了你的价值观
a | b == 0b11111111
a ^ b == 0b11110000
a & b == 0b00001111
就代码而言,在a>>n&1==0
的情况下,您没有做任何事情
let d = b ^ (1<<n); // switch nth bit - gives something like 0b11101111
p = p & d; // leaves all bits untouched except nth which is set to 0
让d=b^(1这不是锈菌特有的
True | x => True
True & x => x
True ^ x =? ¬x
False | x => x
False & x => False
False ^ x => x
为了你的价值观
a | b == 0b11111111
a ^ b == 0b11110000
a & b == 0b00001111
就代码而言,在a>>n&1==0
的情况下,您没有做任何事情
let d = b ^ (1<<n); // switch nth bit - gives something like 0b11101111
p = p & d; // leaves all bits untouched except nth which is set to 0
let d=b^(1我相信p=a^b;
会给出0b11110000
这能回答你的问题吗?我相信p=a^b;
会给出0b11110000
这能回答你的问题吗?