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取反再移位?
望明白人指点下.
{
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
{
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
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28