+ -
当前位置:首页 → 问答吧 → C语言程序设计中的不明白之处:getbits()函数

C语言程序设计中的不明白之处:getbits()函数

时间:2010-07-31

来源:互联网

unsigned getbits(unsigned x, int p, int n)
{
        return (x >> (p+1-n)) & ~(~0<<n);
}
不明白之处: ~(~0<<n)
我的理解是:~的优先级高于<<, ~0变为1然后左移n位,得到:10......0(n个0)
                              然后再取反得到:01......1(n个1)
为什么不直接是~(1<<n),而非要把0取反再移位?

望明白人指点下.

作者: LinuxVon   发布时间: 2010-07-31



QUOTE:
unsigned getbits(unsigned x, int p, int n)
{
        return (x >> (p+1-n)) & ~(~0
LinuxVon 发表于 2010-07-31 15:05




    1只有一位1,~0是全1。这样可以不管int是多少字节的

作者: hellioncu   发布时间: 2010-07-31

回复 hellioncu


    谢谢你,明白你的意思了!

作者: LinuxVon   发布时间: 2010-07-31

相关阅读 更多