bitwise and logical AND/OR in terms of hex result

让人想犯罪 __ 提交于 2019-12-13 03:06:12

问题


so if I have x = 0x01 and y = 0xff and I do x & y, I would get 0x01. If I do x && y do I still get 0x01, but the computer just says its true if its anything than 0x00? My question is are the bits the same after the operation regardless of bit-wise or logical AND/OR, but the computer just interprets the final result differently? In other words are the hex values of the result of & and && (likewise | and ||) operations the same?

edit: talking about C here


回答1:


The answer depends on the precise language in use.

In some weakly-typed languages (e.g. Perl, JavaScript) a && b will evaluate to the actual value of b if both a and b are "truthy", or a otherwise.

In C and C++ the && operator will just return 0 or 1, i.e. the int equivalent of true or false.

In Java and C# it's not even legal to supply an int to && - the operands must already be booleans.

I don't know of any language off the top of my head where a && b == a & b for all legal values of a and b.




回答2:


In C#, the operators behave differently: && is only allowed for boolean types and & for any integer type as well.

a && b returns true, if both a and b are true. a & b returns the result of the bitwise AND operation.



来源:https://stackoverflow.com/questions/28282002/bitwise-and-logical-and-or-in-terms-of-hex-result

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!