-5*3=-15 5*-3=-15 -5*-3=15 这三个不解释了吧。 -5/3=-1 5/-3=-1 -5/-3=1 这三个你这么理解,5/3=1,而后负负为正,正负为负,计算机的运算过程差很少也是这样。 -5%3=-2 5%-3=-2 -5%-3=-2 这三个也是那么理解的,首先无论符号,而后5%3=2,而后有负则为负。 -5&3=3 5&-3=5 -5&-3=-7 这个是按位与,-5二进制是10000101,负数在计算机中是以补码保存的,补码是11111011,3是00000011,正数不用存补码,仍是原码,按位与以后就是00000011,就是3。 5和-3按这个算法,5原码是00000101,-3原码是10000011,补码是11111101,按位与,00000101,就是5。 -5和-3,都是补码,-5补码是11111011,-3补码是11111101,按位与,结果是11111001,这里要注意了,这个数的符号位为1,因此这是一个补码,要翻译一下,除符号位不变外,其余位减1取反,结果是10000111,就是-7。 -5<<3=-40 5<<-3=-1610612736 -5<<-3=1610612736 移位,第一个还好说,-5的补码是11111011,左移3位,左移的过程后边是要补两个数的符号位的与运算的,结果就是11011000,这个数是一个负数,须要转换一次,除符号位外-1取反,就是10101000,就是-40。 第二个和第三个比较麻烦,我以上给你说的都是按照8位的存储说的,其实计算机真正是按照32位存储的,也就是传说中的32位系统,将来还会有64位系统这一说法,那一个数字就是64位了,好了,如今我们看32位的状况。5的实际存储为32位的00000000000000000000000000000101,以前不提另外的0由于不影响运算结果,如今影响了,就加上。左移-3位,就是右移3位,前边补1,也就是两数的符号位求异或的结果,异或说白了仍是负负为正,正负为负,这里补的就是1,结果就是11100000000000000000000000000000,这个数就是-1610612736。