在32位CPU上,整数是4个字节,短整数是2个字节.如果我正在编写一个使用许多数值的C/C++应用程序,它总是符合短整数的提供范围,那么使用4字节整数或2字节整数会更有效吗?
我听说它建议4字节整数更有效,因为它适合从内存到CPU的总线带宽.但是,如果我将两个短整数相加,那么CPU是否会在一次通过中并行封装两个值(从而跨越总线的4字节带宽)?
我正在学习C语言.我有这个代码,如果需要可以提供更多代码:
int result = 0;
int mask1 = 0x0000ffff;
mask1 = mask1 >> 28;
Run Code Online (Sandbox Code Playgroud)
这个当我使用gdb和print时/x mask1,我得到了0x0,这是正确的.那么为什么:
int result = 0;
int mask1 = 0xffffffff;
mask1 = mask1 >> 28;
print 0xffffffff
Run Code Online (Sandbox Code Playgroud)
不应该打印0x0000000f,因为我要换28位?
是否与我的64位机器上占用的int位数有关?我看着这个,但它并没有完全回答所有问题.