关于移位操作

请教一下各位关于移位操作的问题。我现在被搞得有点晕了

1.C/C++和JAVA中的移位操作规则是不是不一样?

2.关于算术移位和逻辑移位。

左移时候比较好理解,都是末尾补0.但是右移的时候我就有点晕了。

正常情况逻辑移位是不管符号位,直接高位补0;而算术移位是根据符号位来补高位的。

比如11001右移2位。逻辑移位结果是00110,而算术移位结果是11110。(这个应该对的吧?)

但是我好想隐约记得还有一种,就是符号位保持不变,剩余的位右移并且在符号位后面补0 。

比如11001右移两位变成10010。我不知道有没有记错,如果没有记错的话。那么这种移位规则是什么?

3.关于C语言中的>>运算符,执行的是逻辑移位还是算术移位?

4.C语言中有没有>>>这个运算符?如果没有那么这个运算符是属于那种语言的?

5.感觉我把C和JAVA学混了?如果可以的话,希望能有人帮我理一下:

C语言中算术移位和逻辑移位的运算规则;

C语言中>>运算符使用了哪种规则;

JAVA语言中算术移位和逻辑移位的运算规则;

JAVA语言中>>运算符和>>>使用了哪种规则;

------解决方案--------------------

#include

unsigned char ui;

signed char si;

char main() {

ui=(unsigned char)0x80u;

si=(  signed char)0x80;

printf("ui=%u\n",ui);

printf("si=%d\n",si);

ui=ui>>1;

si=si>>1;

printf("ui=%u\n",ui);

printf("si=%d\n",si);

printf("--------------\n");

ui=(unsigned char)0x80u;

si=(  signed char)0x80;

printf("ui=%u\n",ui);

printf("si=%d\n",si);

ui=((  signed char)ui)>>1;

si=((unsigned char)si)>>1;

printf("ui=%u\n",ui);

printf("si=%d\n",si);

printf("==============\n");

ui=(unsigned char)0x80u;

si=(  signed char)0x80;

printf("ui=%u\n",ui);

printf("si=%d\n",si);

ui=ui<<1;

si=si<<1;

printf("ui=%u\n",ui);

printf("si=%d\n",si);

printf("--------------\n");

ui=(unsigned char)0x80u;

si=(  signed char)0x80;

printf("ui=%u\n",ui);

printf("si=%d\n",si);

ui=((  signed char)ui)<<1;

si=((unsigned char)si)<<1;

printf("ui=%u\n",ui);

printf("si=%d\n",si);

return 0;

}

//ui=128

//si=-128

//ui=64

//si=-64

//--------------

//ui=128

//si=-128

//ui=192

//si=64

//==============

//ui=128

//si=-128

//ui=0

//si=0

//--------------

//ui=128

//si=-128

//ui=0

//si=0

------解决方案--------------------

C语言中的>> 有符号数就是算数右移,无符号数就是逻辑右移

------解决方案--------------------

引用:请教一下各位关于移位操作的问题。我现在被搞得有点晕了

1.C/C++和JAVA中的移位操作规则是不是不一样?

2.关于算术移位和逻辑移位。

左移时候比较好理解,都是末尾补0.但是右移的时候我就有点晕了。

正常情况逻辑移位是不管符号位,直接高位补0;而算术移位是根据符号位来补高位的。

比如11001右移2位。逻辑移位结果是00110,而算术移位结果是11110。(这个应该对的吧?)

但是我好想隐约记得还有一种,就是符号位保持不变,剩余的位右移并且在符号位后面补0 。

比如11001右移两位变成10010。我不知道有没有记错,如果没有记错的话。那么这种移位规则是什么?

3.关于C语言中的>>运算符,执行的是逻辑移位还是算术移位?

4.C语言中有没有>>>这个运算符?如果没有那么这个运算符是属于那种语言的?

5.感觉我把C和JAVA学混了?如果可以的话,希望能有人帮我理一下:

C语言中算术移位和逻辑移位的运算规则;

C语言中>>运算符使用了哪种规则;

JAVA语言中算术移位和逻辑移位的运算规则;

JAVA语言中>>运算符和>>>使用了哪种规则;

C语言的移位算符在不同的编译器下,对有符号数会有不同的行为。所以只应当对无符号数进行移位操作。

c语言 右移位什么情况补1,关于移位操作,该如何处理相关推荐

  1. C语言 >> 右移位运算符的原理和一些概念

    1.右移位于左移位不同 左移位 不管是 逻辑移位 算术移位 都是低位补0: 右移位 的 逻辑移位和算术移位不同, 算术移位高位补符号位,逻辑移位 高位补0: 右移位 使用逻辑移位的话 需要强制转换成u ...

  2. 常见位操作及运算应用举例:1,C语言中位运算符异或“∧”的作用​​​​​​​2,异或运算的作用3,(与运算)、|(或运算)、^(异或运算)

    1 C语言中位运算符异或"∧"的作用: 异或运算符∧也称XOR运算符.它的规则是若参加运算的两个二进位同号,则结果为0(假):异号则为1(真).即0∧0=0,0∧1=1,1∧1=0 ...

  3. c语言程序设计施莹答案,C语言课件-位运算.ppt

    C语言课件-位运算.ppt C语言程序设计,信息工程学院 施莹 2019年11月,第12章 位运算,C语言是为描述系统而设计的,其功能应当具有汇编的功能 故C语言具有高级语言的的功能,也肯定低级语言的 ...

  4. c语言位运算负数的实例_一招教你学会C语言中位运算

    程序中的所有数在计算机内存中都是以二进制的形式储存的.位运算说穿了,就是直接对整数在内存中的二进制位进行操作.注意,位运算只针对于整数进行操作. 运算符号 运算规则 1.&与运算:对应两个二进 ...

  5. 单片机中c语言 右移 和左移 与CY

    单片机中c语言"右移>>和左移<<"与CY 左移 << 0100 1111 << 左移一位:1001 1110 CY=0 :第一位跑 ...

  6. 谭浩强c语言不讲位运算呢,谭浩强C语言_CHAR12位运算.DOC

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspC/C++资料 谭浩强C语言_CHAR12位运算.DOC11页 ...

  7. C语言中位运算符有哪些

    C语言中位运算符有: 位操作是程序设计中对位模式按位或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运 ...

  8. python左移右移位运算_荐Python : 位运算 —— 与、或、异或、左移、右移

    Python : 位运算 -- 与.或.异或.左移.右移 位运算 位运算是把数字用 二进制 表示之后,对每一位上 0 或者 1 的运算.位运算共有 5 种运算:与.或.异或.左移.右移. 与.或.异或 ...

  9. Java移位运算符详解实例——左移位运算符、带符号的右移位运算符

    移位运算符也针对二进制的"位",它主要包括:左移位运算符(<<).右移位运算符(>>>).带符号的右移位运算符(>>). 1.左移运算符 ...

最新文章

  1. Winserver-Exception from HRESULT: 0x800A03EC
  2. flutter进行自动编译操作步骤
  3. 因吵架总被骂,阿里程序猿一气之下发明“情侣吵架神器”
  4. Network in Network----Global Average Pooling
  5. 软考信息系统项目管理师_信息化与信息系统4_软件工程_新一代信息技术---软考高级之信息系统项目管理师006
  6. 【Vue起步-Windows】N01:环境安装
  7. Go语言同步和异步执行多个任务封装
  8. 问题解决:pip无法使用,经升级后可以使用
  9. 事业单位考试高频考点一:马克思主义基本原理
  10. 超全面的权限系统设计方案!
  11. 数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器
  12. git 版本控制~ 文件没有绿色和红色图标
  13. 探究文华盘整(PANZHENG)函数之一
  14. 内容过于真实,可能会引起不适-----程序员去面试的梗!面试官:“哦了,明天来上班吧”
  15. PHP微信根据订单号查询支付结果,9. PHP接入微信支付订单、退款订单、转款订单的查询...
  16. Nacos的配置及使用--windows
  17. Windows下PCIe接口的多串口卡驱动开发小结
  18. 关于百度oauth2.0登陆的诸多问题
  19. UVa12099书架
  20. 给公司领导的一些小建议

热门文章

  1. 【题目精刷】2022荣耀-数字芯片
  2. 字节跳动发布最新音乐检索系统ByteCover2,检索速度提高八倍
  3. 分享几款分析流量的工具
  4. kettle 导出上一个月的数据 文件名带上月时间
  5. Java并发——Synchronized和Volatile
  6. 大小端转换(一篇文章了解所有情况下的大小端转换方法)
  7. 设计模式-05 (工厂模式)
  8. CSDN Markdown编辑器之emoji表情
  9. 转转前端周刊第五十二期
  10. 安卓开发购物app!闭关60天学懂NDK+Flutter,已拿offer入职