下面这个表达式在c++中是什么意思?
what is the meaning of the following expression in c++
下面这个表达式在c++中是什么意思?
(variable1 | (variable2 << 8))
这是什么意思?它代表什么?
它将两个变量连接在一起。
假设有两个字符,a
和b
。a|b<<8
将b
的8位位左移,|
将a
或b
中的每一位位都置位。
因此,在本例中,结果将是" ab
"。
'a'是97,'b'是98,所以按位计算如下:
a: 01100001
b: 01100010
b<<8: 0110001000000000
a|b<<8: 0110001001100001
|
is Bitwise OR
<<
is Bitwise left shift operator
(variable1 | (variable2 << 8))
将variable2
(8位)左移8
,然后将OR
与variable1
(8位)的结果左移,结果输出将两个变量variable1
和variable2
合并为一个变量(16位)
您可以将其视为按位方式"连接"两个变量。
如果:x = 00000000 00001000 (16-bit binary)
y = 00000000 00100010 (16-bit binary)
:
(y << 8) = 00100010 00000000
x | (y << 8) = 00100010 00001000
在你发现它的代码上下文中到底是什么意思,谁也说不准。
实际上,如果x
在最高位字节中设置了任何位,则"连接"是不准确的:
x = 01000000 00001000 (16-bit binary)
y = 00000000 00100010 (16-bit binary)
:
(y << 8) = 00100010 00000000
x | (y << 8) = 01100010 00001000
如果variable1
和variable1
是8位值,则将它们合并为单个16位值
如果两个变量都是字节,那么这是有意义的。在这种情况下,它会将它们组合成一个更大的变量,所以首先是8位的variable2,然后是8位的variable1。
在您的代码中,variable1
的8位最低有效位(最右边)从右边附加到variable2
的位,variable2
的位向左移动8。
表示variable1
的位
xxxxxxxxxxxxxxxxxxxxxxxxwxxxxxxx
和variable2
的位作为
yyyyyyyyzyyyyyyyyyyyyyyyyyyyyyyy
然后表达
(variable1 | (variable2 << 8))
将导致
zyyyyyyyyyyyyyyyyyyyyyyywxxxxxxx
我不知道你所说的"含义"是什么意思-但这是一个变量与另一个变量的按位或运算,这个变量左移了8位(你可以认为是乘以256)
如果variable1
和variable
都小于256,则语句与variable1 + (variable2*256)
相同。
一般来说,|
是二进制或与,<<
是左移。
那么如果我们从
开始variable1 = 321;
variable2 = 123;
二进制值为:
variable1 => 0000 0001 0100 0001
variable2 => 0000 0000 0111 1011
左移variable2
8导致:
0111 1011 0000 0000
所以variable1 | (variable2 << 8)
=
0111 1011 0100 0001
等于32065。这小于31519(321 +(123 * 256))的结果,因为variable1
和variable2 << 8
有一些共同的位。
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思