Rust语言编程实例100题-054
题目:学习使用按位取反!。
普及点计算机知识:计算机并不直接存储二进制原码,而是存储二进制的补码。正数的补码就是原码,比如1,原码0000 0001,补码也为0000 0001。而负数的补码,是“符号位不变,原码取反再加一”(计算机毕竟不是人,需要人为嵌入一套完美的规则。这种存储方式有着严谨的数学证明,感兴趣的同学可以自行上网查找。),比如-1,原码1000 0001,取反1111 1110,加一后1111 1111,1111 1111就是-1的二进制补码。负数输出时,将补码逆向译成原码,原码取反加一得补码,补码减一取反得原码。
程序分析:~0=1; ~1=0
知识点:与 或 非 左移 右移
参考程序代码:
fn main() {
let a = 10;
dbg!(!a);
}
程序执行结果:
!a = -11
网友评论