Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 如何修改铁锈中给定位置的位值?_Rust - Fatal编程技术网

Rust 如何修改铁锈中给定位置的位值?

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

我可以用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;

    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
这能回答你的问题吗?