Syntax 什么是「;0xXXXX";学习位操作时的语法?(其中X是大写字母数字字符)

Syntax 什么是「;0xXXXX";学习位操作时的语法?(其中X是大写字母数字字符),syntax,bit-manipulation,bit,Syntax,Bit Manipulation,Bit,在学习了基础知识和一些解决方案之后,我试图通过做一些问题来学习位操作,我似乎看到了这种格式。例如: N = (N & 0xAAAA)>>1 | (N & 0x5555)<<1 N=(N&0xAAAA)>>1 |(N&0x5555)。“0x”表示它是一个十六进制数,其余数字是值。前缀0x是许多系统和语言中使用的标准约定,例如C及其子体、Unix Shell、Windows Powershell AAAA等于以10为基数的43690(标准十进制)。类似地,0

在学习了基础知识和一些解决方案之后,我试图通过做一些问题来学习位操作,我似乎看到了这种格式。例如:

N = (N & 0xAAAA)>>1 | (N & 0x5555)<<1
N=(N&0xAAAA)>>1 |(N&0x5555)。“0x”表示它是一个十六进制数,其余数字是值。前缀0x是许多系统和语言中使用的标准约定,例如C及其子体、Unix Shell、Windows Powershell


AAAA等于以10为基数的43690(标准十进制)。类似地,0x5555=21845。十六进制是在按位操作(这是代码中发生的事情)期间使用的一个常用基数,因为基数是二的幂,并且它比二进制更紧凑。

这些是十六进制值。0xAAAA相当于1010101010。A=1010(二进制)。所以4A是四个二进制值序列

当你把它和一个二进制&结合起来,你会寻找与模式1010一致的所有N位。。。其中两个位均为1,并仅保留这些位

例如:

  1110101010101001
& 1010101010101010
------------------
  1010101010101000
0x5555也是如此。5 = 0101. 希望你能明白

另一方面,二进制或运算符在二进制数具有1的每个位置返回1,如:

  1010
| 0101
------
  1111

位移位运算符(>>和那些是十六进制值。每个字符代表1-16,所以0-9然后是A->F。这基本上是数字的基数16表示法。通常人类使用基数10,但在计算机中,基数2和基数16非常常见。