按位与操作

2025-02-07 11:47:04
推荐回答(2个)
回答1:

会有追加吗?
首先,你的0376这个数字应该是8进制数吧,前面的0应该是八进制的识别符吧。
因此,0376的二进制就是1111 1110,二进制的与运算规则是,只有两个数同时为1时,则结果才为1,只要有一个数为0,则结果就为0。比如1&1=1; 1&0=0; 0&1=0; 0&0=0; 因此把一个字符与二进制1111 1110进行与运算的结果就是把最后位设为0,而其他位不变。作个比喻假设a的二进制表示为1010 0111我们先不管这个数表示的是什么,我们来把这个数与1111 1110进行按位与运算,看看结果。
1010 0111
& 1111 1110
结果为 1010 0110
可以看到只是把最后一位设为0了,其他位不变。
现在明白了?

补充回答:不会变为1,看来你还是没有明白按位与的运算规则啊,运算规则是两个数同时为1结果才为1,不是两个数相同,两个数相同为1的运算是按位异或。也就是说按位与运算时,只要有一个操作数为0,计算结果就为0,理在懂了?
1010 0111
& 1010 0110
结果为1010 0110
明白了??

回答2:

首先,你的0376这个数字应该是8进制数吧,前面的0应该是八进制的识别符吧。
因此,0376的二进制就是1111 1110,二进制的与运算规则是,只有两个数同时为1时,则结果才为1,只要有一个数为0,则结果就为0。比如1&1=1; 1&0=0; 0&1=0; 0&0=0; 因此把一个字符与二进制1111 1110进行与运算的结果就是把最后位设为0,而其他位不变。作个比喻假设a的二进制表示为1010 0111我们先不管这个数表示的是什么,我们来把这个数与1111 1110进行按位与运算,看看结果。
1010 0111
& 1111 1110
结果为 1010 0110
可以看到只是把最后一位设为0了,其他位不变