C语言中"按位与"&运算中如果是两个负数,先取反“与”,所得的结果是否要写成原码?书中写到负数先要取反,再进行“按位与”,但没说“按位与”之后所得的结果是否要写成原码,依我之见,当

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/27 16:12:44
C语言中"按位与"&运算中如果是两个负数,先取反“与”,所得的结果是否要写成原码?书中写到负数先要取反,再进行“按位与”,但没说“按位与”之后所得的结果是否要写成原码,依我之见,当C语言中"按位与"&

C语言中"按位与"&运算中如果是两个负数,先取反“与”,所得的结果是否要写成原码?书中写到负数先要取反,再进行“按位与”,但没说“按位与”之后所得的结果是否要写成原码,依我之见,当
C语言中"按位与"&运算中如果是两个负数,先取反“与”,所得的结果是否要写成原码?
书中写到负数先要取反,再进行“按位与”,但没说“按位与”之后所得的结果是否要写成原码,依我之见,当结果写成十进制时,应写成原码.是不是这样啊?

C语言中"按位与"&运算中如果是两个负数,先取反“与”,所得的结果是否要写成原码?书中写到负数先要取反,再进行“按位与”,但没说“按位与”之后所得的结果是否要写成原码,依我之见,当
按位与运算是按照数据的内部二进制形式进行运算的.若是两个负数,则是按二进制补码形式进行按位与.所得结果若用有符号整型变量存储,则内部形式仍看作二进制补码.如果用格式符%d输出,输出结果为十进制真值(不应该称为十进制原码).
例如:
#include
main()
{short int a=-2,b=-3,c;
a=-2;//a的补码1111 1111 1111 1110
b=-3;//b的补码1111 1111 1111 1101
c=a&b;//c的补码1111 1111 1111 1100
printf("%hd\n",c);//c的真值-4
}