栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

有符号数的左移和右移

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有符号数的左移和右移

对于无符号数的左移和右移,因为不涉及到符号位的问题,比较好理解:
左移低位补零,高位舍弃
右移高位补零,低位舍弃

对于有符号数的左移和右移,因为符号位的参与,可能各个编译器的实现方式上有差别
我在/home/utils/gcc-5.2.0/bin/g++ 这个g++编译器的版本上试了下:
左移低位补零,高位舍弃(和无符号数的实现相同)
右移高位补符号位,低位舍弃。所以如果一个int类型的-1, 进行右移操作,无论进行多少次,结果仍然为-1,因为-1 = 1111 1111 1111 1111 1111 1111 1111 1111b.

另外,char类型,其实是一个int8_t类型,是一个有符号的8bit整数类型。

参考:C语言中无符号数和有符号数的左移和右移

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/850643.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号