mokongking

c语言<<,>>应用理解

不讲原理,左移低位补零,右移高位补零。在使用中总结的规律,在进制转换中遇到10机制的左移或右移,可以将变量乘以2的n次方或者除以2的n次方,左乘,右除,但是乘除要考虑高位的数据溢出,低位数据的丢失。例如十进制数5右移1位就会造成数据的丢失因为5除以2为2.5 ,0.5就会丢失,在二进制数中显示:5的二进制是101右移以为就是10就是10进制数2,高位溢出的情况就是例如定义了一个int a = 48,uint8_t a = 48,把这两个数字同时左移3位,int类型的a经过转移三位就是384 ,而无符号8位int类型就是128.因为int类型占4字节,总共是32位最高位是32位48左移三位并不会溢出,而uint8_t就会造成高位溢出导致两结果不同。若把uint8_t换成16位或者32位结果就可以一样

 

posted on 2022-08-16 22:52  虎啸岳林  阅读(34)  评论(0编辑  收藏  举报

导航