摘要:
因为左移操作不会导致符号位出现缺位,所以不考虑符号位,低位补0即可;右移操作会涉及到符号位出现缺位的问题,所以在有符号数的右移操作时要考虑符号位怎么补的问题。 左移操作(>)对于无符号数来讲为逻辑右移,对应汇编中的shr,对于有符号数来讲为算数右移,对应汇编中的sar。 对于VC编译器编出来的代码,移位操作的位数保存在cl寄存器。 当移动的位数大于或等于该数据类型位数时,CPU对移动的位数进行基于数据类型位数的取余运算,余数为实际移动的位数。比如uint32_t类型左移32位,实际移动0位,也就是数字保持不变;左移33位,则实际左移1位。 逻辑左移时,高位补0;逻辑右移时,低位补0... 阅读全文
posted @ 2013-08-01 00:04 codeape 阅读(2766) 评论(0) 推荐(0) 编辑