C语言按位取反?

C语言按位取反?,第1张

~10的计算步骤:

转二进制:0 1010

计算补码:0 1010

按位取反:1 0101

转为原码:1 0101

按位取反:1 1010 反码

末位加一:1 1011 补码

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

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

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

int在VC里是4字节,也就是32位,所以那30个高位的0被取反成1了,当然不是1。

要得到1,那把a与3做“与” *** 作,就把高位的30个位数全部清0了。

# include "stdio.h"

main()

{int a

a=2

a=~a

a=a&3

printf("%d",a)

}


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

原文地址: http://outofmemory.cn/yw/12087794.html

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

发表评论

登录后才能评论

评论列表(0条)

保存