关于小端和大端的按位非运算符(C 中的 ~)

2024-01-08

这与家庭作业有关,但这不是家庭作业。

我很难理解按位不是否存在差异(~在C)中会受到影响signed int and unsigned int在大端机器和小端机器上编译时。

是字节数really“向后”,如果是这样,按位非(和其他运算符)会导致不同的结果int是否根据机器类型进行生产?

当我们这样做时,C 中每个按位运算符的答案是否相同,或者是否有很大的依赖性?

我指的运营商是:

~  /* bitwise Not */
&  /* bitwise And */
|  /* bitwise Or */
^  /* bitwise Exclusive-Or */

先感谢您!

Update:在阅读到目前为止我的回复时,我觉得有必要问按位非运算符是否会影响signed int。恐怕我在这方面有点困惑,因为我忘记了所有的静止。 Adam 似乎在声明所有值都被视为无符号。符号位是否被重新应用,或者曾经有符号的值是否变为无符号?


位运算符和逻辑运算符在大尾数法和小尾数法机器中的操作方式完全相同。同样,它们对有符号和无符号数据也进行相同的操作:结果就好像所有内容都是无符号的。因此,如果x and y是有符号整数,那么~x equals (int)(~((unsigned int)x) and x & y equals (int)(((unsigned int)x) & ((unsigned int)y),对于所有其他运算符依此类推。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于小端和大端的按位非运算符(C 中的 ~) 的相关文章

随机推荐