前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >定点数的移位运算(逻辑左移和算术左移)

定点数的移位运算(逻辑左移和算术左移)

作者头像
黎鹤舞
发布2024-05-24 14:12:22
620
发布2024-05-24 14:12:22
举报
文章被收录于专栏:黎鹤舞的编程技术栏
文章目录

  • 定点数的移位运算
  • 逻辑移位和算数移位
    • c语言代码演示:
    • 过程分析:
  • 总结:

定点数的移位运算

逻辑移位和算数移位

对于408考研的同学,先抛结论:

对于左移操作符,不区分逻辑左移和算数左移,统统要移动符号位!!!,只有右移才分逻辑右移和算数右移

即:左移不区分逻辑左移和算数左移

左移不区分逻辑左移和算数左移

左移不区分逻辑左移和算数左移 重要的事情说三遍!!!

这里是很多 408考生已经错的一处知识点,如果你是考研的学生看到这里,就可以退出了,记住这个结论就行。

下面我用代码给大家证明一下上述结论:

c语言代码演示:

注:环境为64位系统下的visual studio2019

代码语言:javascript
复制
#include<stdio.h>

int main() {
    // 选择一个有符号整数作为例子
    int value = -10; // 以-10为例

    // 逻辑左移
    int logicalLeftShiftedValue = (unsigned)value << 1;
    // 算术左移
    int arithmeticLeftShiftedValue = value << 1;


    printf("原始值:%d\n", value);
    // 打印逻辑左移和算数左移的结果
    printf("算术左移结果:%d\n", arithmeticLeftShiftedValue);
    printf("逻辑左移结果:%d\n", logicalLeftShiftedValue);
    
    printf("-----------------------------------------------------\n");

    // 逻辑右移
    int logicalRightShiftedValue = (unsigned)value >> 1;
    // 算术右移
    int arithmeticRightShiftedValue = value >> 1;

    // 打印逻辑右移和算数右移的比较结果
    printf("算术右移结果:%d\n", arithmeticRightShiftedValue);
    printf("逻辑右移结果:%d\n", logicalRightShiftedValue);

    return 0;
}

输出结果:

image-20240516131238149
image-20240516131238149

过程分析:

  • 系统初始化: 有趣的冷知识: 在debug模式下,编译软件默认会把 空间内未初始化的栈内存上的指针全部填成 0xcccccccc,由GBK编码按字符输出为(0xCCCC)
image-20240516132316715
image-20240516132316715
  • 逻辑左移和算术左移:
image-20240516133226500
image-20240516133226500

由补码的符号扩展可知(数值相等): ffff fff6 = f6 = 1111 0110;ffff ffec = ec = 1110 1100; 符合定律

  • 同理可知右移:
image-20240516133725697
image-20240516133725697

总结:

image-20240516133821458
image-20240516133821458
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 定点数的移位运算
  • 逻辑移位和算数移位
    • c语言代码演示:
      • 过程分析:
      • 总结:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档