今天参加华勤公司的春招笔试,遇到了一个很有趣的问题。 以前没有在意过的Java中的意思如下
public class haha { publicstaticvoidmain (string [ ] args ) { int a=10; system.out.println(~a ); }首先,我们需要知道:
正数的原代码=逆代码=补充负数的逆代码=原代码的符号位不变,其他位全部相反,负数的候补代码=逆代码1。 1、首先~表示非运算符,将该数的所有二进制位取反。 但是,由于以补充代码的形式存储在计算机中,所以0 1010全部相反为1 0101 (如果只是补充代码的形式,就需要转换成原来的代码)。
同调
2、此时获得的1 0101只是补数。 需要先把这个转换成反符号。 逆符号=补数-1,逆符号为1 0100。
同调
3、我们得到反码后,把它转换成原码。 原始代码=逆代码符号的位不变。 其他位都相反,最终的原始代码为1 1011,转换为十进制后为-11。
同调
总结:只要记住一个公式就行了,永远都不会错的
(x )=-- (x1 ) ) ) ) ) ) ) ) ) ) x ) ) )。