Loading

2.2.3移位运算

移位运算

image-20200830143536125

1.1算数移位

  • 源码的算术移位:符号位置保持不变,仅对数值进行移位

右移:高位补0,低位舍弃。若舍弃的位=0,则相当于/2,若舍弃的不等于0,就会丢失精度

把0000101.0 向右移动一位 000010.1 小数点后面的会1被舍弃,导致精度不足

左移:低位补0,高位舍弃,若舍弃的位=0,相当于*2,若舍弃的位不等于0,则会严重丢失精度

  • 反码的算术移位
image-20200830152303354

正数的反码与原码相同

右移:高位补0,低位舍弃 左移:低位补0,高位舍弃

负数的反码与原码相反 右移:高位补1,低位舍弃 左移:低位补0,高位舍弃

  • 补码的算术移位

正数的补码 右移:高位补0,低位舍弃 左移:低位补0,高位舍弃

负数的补码=反码末尾加1 右移:高位补1,低位舍弃 左移:低位补0,高位舍弃

image-20200830153735266

左移相当于x2,右移相当于除2

因为位数有限,无法用算数移位精确的等效乘除法

image-20200830154056859

1.2 逻辑移位

逻辑右移: 高位补0,低位舍弃

逻辑左移:低位补0,高位舍弃

Eg:在颜色代码中RGB(102,139,139) 二进制代表(01100110,100001011,10001011)

image-20200830155404409

1.3 循环移位

在做一些运算时,数值会溢出,多出一个进位

在进行循环移位时,右移会将原本的进位放在末尾的位置,新进的溢出位,代替原本的进位

image-20200830155924784

变成

image-20200830155959348

posted @ 2021-03-16 22:45  炒焖煎糖板栗  阅读(563)  评论(0编辑  收藏  举报