hug*_*gie 4 c bit-manipulation
在这里 从字节缓冲区转换回unsigned long int时:
unsigned long int anotherLongInt;
anotherLongInt = ( (byteArray[0] << 24)
+ (byteArray[1] << 16)
+ (byteArray[2] << 8)
+ (byteArray[3] ) );
Run Code Online (Sandbox Code Playgroud)
其中byteArray声明为 unsigned char byteArray[4];
题:
我以为byteArray[1]只是一个unsigned char(8位).当左移16时,不会将所有有意义的位移出并用0填充整个字节吗?显然它不是8位.也许它正在移动整个byteArray,这是一个连续的4字节?但我不知道它是如何工作的.
在算术方面byteArray[0]是促进要么int或者unsigned int,这样的转变是合法的,甚至懂事(我想与只处理unsigned做按位的东西时,类型).
6.5.7按位移位运算符
对每个操作数执行整数提升.结果的类型是提升的左操作数的类型.
整数促销:
6.3.1.1
如果int可以表示原始类型的所有值,则该值将转换为int; 否则,它将转换为unsigned int.这些被称为整数促销.
| 归档时间: |
|
| 查看次数: |
10417 次 |
| 最近记录: |