1
35
让我们用16位作为例子。在这种情况下,~0等于
我们离开的时候把这个换了
因为
所以这只是一个聪明的方法
您描述的“x位”已经将给定的数字(F994)右移到足够远的位置,因此最低有效的3位就是您想要的。在本例中,您请求的位被“.”字符包围。
在那里你有你的部分。塔达!! |
2
11
我想说,最好的办法是用手把问题解决,这样你就能理解它是如何工作的。 以下是我使用8位无符号int所做的操作。
~ 0=1111 1111
好的,我们有面具。
0100 1011>>3 0000 1001 现在我们有了一个低阶正确位数和低阶原始位数的掩码。
0000 1001 所以答案是十进制9。 注: 更高阶的半字节恰好都是零,在这种情况下,屏蔽是多余的,但根据我们开始使用的数字的值,它可能是任何东西。 |
3
6
把结果和其他东西放在一起会返回其中的内容
编辑:我想指出我一直在使用的这个程序员计算器: AnalogX PCalc . |
4
3
还没有人提到它,但在ANSI C中
这是因为
参考文献:C11 6.5.7/4(早期版本的文本相似)
在K&R C中,此代码将依赖K&R开发的特定系统类,天真地转换
所以这个例子实际上只是作为一个历史的好奇心才有趣,它不应该在1989年以来的任何真实代码中使用(如果不是更早的话)。 |
5
2
使用示例: int x=0xf994,p=4,n=3; int z=获取位(x,p,n); 专注于这一套操作 ~(~0<<n)
对于任何位集(10010011等),您希望生成一个只提取您希望看到的位的“掩码”。所以10010011或0x03,我对xxxxx 011感兴趣。什么是将提取该集的遮罩?00000111现在我想独立于int的sizeof,我将让机器做这个工作,即从0开始,字节机器是0x00,字机器是0x0000,等等。64位机器可以用64位或0x000000000000000表示。
|
6
-2
在
//关于左移导致问题的帖子是错误的。 无符号字符m,l; m=~0>>4;生产255,等于~0,但是, m=0; L=M>>4;产生的正确值15与以下值相同: m=255>>4;
左移负极没有问题
|
minus one · 空条件和空合并运算符*与*纯布尔表示法 6 年前 |
zaozaoer · >>java中带负字节值的and>>>运算符 6 年前 |
Ganesh Thampi · 使用位的奇偶程序 6 年前 |
FredMan · Rust中的<-符号是什么? 6 年前 |
user9578589 · Java条件数组 6 年前 |
Francisco José Letterio · 无法理解指针操作 6 年前 |
Danny · 如何在r中键入grep中的运算符 6 年前 |
David Rector · 什么是?=操作员在Swift中做什么? 6 年前 |
Gian · “/”操作符在Lua中提供什么功能? 6 年前 |