64,654
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
int main(void)
{
unsigned char a = 0xA5;
unsigned char b = ~a>>4;
printf("%d\n", b);
return 0;
}
升为0x000000A5;
unsigned char b = ~a>>4;//所以~a == 0xFFFFFF5A,当右移是逻辑移位时,~a >> 4 == 0x0FFFFFF5;,当右移是算术移位时,,~a >> 4 == 0xFFFFFFF5;当赋值时发生截断之后,b的值都是0xF5
unsigned char a = 0xA5;//32位下,a在参加下面的~a之前会先整值提升为0x000000A5;
unsigned char b = ~a>>4;//所以~a == 0xFFFFFFA5,当右移是逻辑移位时,~a >> 4 == 0x0FFFFFFA;,当右移是算术移位时,,~a >> 4 == 0xFFFFFFFA;当赋值时发生截断之后,b的值都是0xFA