sra和srl有什么区别
SRA和SRL都是指向右移位运算,但它们的区别在于:
-
SRA是算术右移,即右移时保留符号位,移位后高位用符号位填充;SRL是逻辑右移,即右移时不保留符号位,移位后高位用0填充。
-
对于有符号整数,SRA操作可以保证右移后的结果仍然是有符号整数;而SRL操作则会将有符号整数转换为无符号整数,可能会导致错误的结果。
举个例子:
假设有一个8位的有符号整数,其二进制表示为11100101,即-27。
执行SRA操作,将其右移1位,得到11110010,即-14。
执行SRL操作,将其右移1位,得到01110010,即114。
可以看到,SRA操作保留了符号位,得到了正确的结果;而SRL操作将有符号整数转换为无符号整数,得到了错误的结果。
原文地址: https://www.cveoy.top/t/topic/cLxU 著作权归作者所有。请勿转载和采集!