c语言中的位运算符中‘按位取反’是怎么运算的

c语言中的位运算符中‘按位取反’是怎么运算的,第1张

使用~按位取反运算的时候,计算机会将埋帆 *** 作数所对应的二进制表达式的每一个位进行取反计算,取反后所得到的值就是~按位取反的运算结果。

例如,假如计算机是32位弯如雹的,接下来要计算~5的值,计算过程如下:

5 的二进制表达式为:0000 0000 0000 0000 0000 0000 0000 0101

执行~运算,即~5后: 1111 1111 1111 1111 1111 1111 1111 1010,即结果为-6

以上过程没有任何问题,但如果忘记了负数的二进制表达方式,那么就会对这个结果产生疑问,为什么1111 1111 1111 1111 1111 1111 1111 1010表示-6,可能会以为它应该表示-10等等,所以,使用~按位取反的另一个关键就是理解1111 1111 1111 1111 1111 1111 1111 1010为什么表示-6,也即理解负数的二进制表达方式。

扩展资料

js取整

~是按位取反运算,~~是取反两次

在这里~~的作用是去掉小数部分

因为位运算的 *** 作值橡森要求是整数,其结果也是整数,所以经过位运算的都会自动变成整数

除了~~n 还可以用

n<<0

n>>0

n|0

~10的计算步骤:

转二进制:0 1010

计算补码:0 1010

按位取反:1 0101

转为原码:1 0101

按位取反搭扒:1 1010 反码

末位吵肆加一升枝轿:1 1011 补码

符号位为1是负数,即-11

规律:~x=-(x+1);

因此,t=~10(1010)==-11;


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12467979.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存