当前位置: 首页 > news >正文

有符号数和无符号数左移和右移

主要是有符号数的左移。
有的说不管符号位,直接左移,所以可以一会正数一会复数
https://bbs.csdn.net/topics/391075092
有的说符号位不动,其他来左移
不明白了。。。。
https://blog.csdn.net/hnjzsyjyj/article/details/119721014
https://wenku.baidu.com/view/6e31935402f69e3143323968011ca300a6c3f60d.html?wkts=1682661838416

算术移位对应有符号位数,逻辑移位对应无符号位数

左移与符号无关,都是逻辑左移(对应SHL指令),而右移无符号数做逻辑右移(对应SHR指令)、有符号数做算术右移(对应SAR指令)。 不过这也是与语言相关的,在Pascal中,移位一律是逻辑移位,算术移位要用乘除。

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

对于有符号数的左移和右移,因为符号位的参与,可能各个编译器的实现方式上有差别
我在/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整数类型。
————————————————
:https://blog.csdn.net/baidu_35679960/article/details/124510929

http://www.lryc.cn/news/62960.html

相关文章:

  • Netty小白入门教程
  • 【逻辑位移和算数位移】
  • Blender3.5 边的操作
  • Java与Python、Node.js在人工智能和区块链应用程序开发中的比较
  • 【计算机是怎么跑起来的】基础:计算机三大原则
  • NXP公司LPC21XX+PID实现稳定温度控制
  • 【CE实战-生化危机4重置版】实现角色瞬移、飞翔
  • 强烈建议互联网人转战实体和农业,去了就是降维打击!实体太缺人才了,老板也不缺钱!...
  • 如何将 github pages 迁移到 vercel 上托管
  • 2023五一数学建模竞赛(五一赛)选题建议
  • Packet Tracer - 配置 RIPv2
  • Android类似微信聊天页面教程(Kotlin)四——数据本地化
  • C/C++基础知识
  • Java 入门 - 语法基础
  • Java线程池及拒绝策略详解
  • GitLABJenkins
  • 互联网摸鱼日报(2023-04-26)
  • 石化企业数字化防爆融合通信解决方案
  • NTT学习笔记(快速数论变换)
  • Android类似微信首页的页面开发教程(Kotlin)二
  • PAt A1015 Reversible Primes
  • 解决Lemuroid识别不到蓝牙键盘的问题
  • SpringBoot 使用 Sa-Token 完成权限认证
  • Spring核心与设计思想、创建与使用
  • mysql 备份 还原
  • 每日学术速递4.26
  • RabbitMQ使用StringRedisTemplate-防止重复消费
  • 临沂大学张继群寄语
  • 线程学习笔记
  • 代码随想录算法训练营第四十二天|01背包问题,你该了解这些!、01背包问题,你该了解这些! 滚动数组 、416. 分割等和子集