C语言中负数的存贮
对于有符号的数,规定其二进制代码的最高位为符号位。
只要是整数,内存中存储的的都是二进制补码
正数的原码、反码、补码相同
负数在内存中存储的是二进制的“补码”
使用时,打印的是这个数的“原码”
那么补码怎么变为原码呢?
补码→反码→原码
eg: 补码:1111 1111 1111
反码=补码减1=1111 1111 1110
原码=反码中每个数取反,除第一位(在二进制表示方法中第一位表示正负,二进制的第一位为1则是负数,第一位为0则这个二进制数是正数)
所以,原码=1000 0000 0001
转为十进制为-1
前置++,与后置++(--同理)
逻辑&&(与),逻辑||(或)
int a,b;
1.a&&b ,若a和b都为非0(非0就是真) 则逻辑运算的结果为1(真)。
反正,若a和b中有一个为0(假),则逻辑运算的结果为0(假)。
2.a||b , 若a和b有一个为真, 则逻辑运算的结果为1(真)。
反正,若a和b都为0,则逻辑运算的结果为0(假)。
计算符号与&、或 |、异或 ^
注意:运算对象为二进制
a=3 (011) b=5 (101)
a&b=1(001) a|b=7(111) a^b=6(110)
&与:相同为1,反之为0
|或:有1就为1
^: 相同为0,反之为1