对于任意w位的二进制,进行k位的移动时,真实的位移量为k mod w

32bit的例子

1 << 1 结果2 1 mod 32 => 1
1 << 32 结果1 32 mod 32 => 0
1 << 33 结果2 33 mod 32 => 1

但,如果是纯字面量计算,却得出0,看代码:

int a = ;
printf("%d", << a); //
printf("%d", << ); //

第一种情况,在编译过程中,由于gcc编译器不知道变量a的值,所以,位移量为33,会执行33%32=1,答案是2
第二种情况,在编译过程中,如果加上-Wall编译选项,gcc编译器会提醒你,位移量大于类型的宽度,所以,按照gcc自己处理的来,得到的答案是0,就是你的想法。

以上解释也不是很清楚,我也没有在gcc手册找到解释。先搁置吧。

关于c语言的左移运算的更多相关文章

  1. C语言:位运算

    所谓位运算,就是对一个比特(Bit)位进行操作.在<数据在内存中的存储>一节中讲到,比特(Bit)是一个电子元器件,8个比特构成一个字节(Byte),它已经是粒度最小的可操作单元了.C语言 ...

  2. C语言的位运算

    位运算加速技巧1. 如果乘上一个2的倍数数值,可以改用左移运算(Left Shift) 加速 300% x = x * 2;x = x * 64;//改为:x = x << 1; // 2 ...

  3. R语言的日期运算

    写hive SQL查询, 需要从导入的参数, 自动累加日期. 从而实现一个自动的,多个日期的统计过程 R语言的日期运算超级简单. > test<-Sys.Date() > test ...

  4. C语言之位运算

    位运算 1).定义. 指的是1个二进制数据的每一位来参与运算. 位运算的前提: 是这个数必须是1个二进制. 注意: a). 参与位运算的二进制数据必须是补码形式. b). 位运算的结果也是二进制的补码 ...

  5. C语言的位运算的优势

    位运算加速技巧1. 如果乘上一个2的倍数数值,可以改用左移运算(Left Shift) 加速 300% x = x * 2;x = x * 64;//改为:x = x << 1; // 2 ...

  6. C语言的位运算的优势 !

    位运算加速技巧1. 如果乘上一个2的倍数数值,可以改用左移运算(Left Shift) 加速 300% x = x * 2; x = x * 64; //改为: x = x << 1; / ...

  7. C语言 三目运算

    C语言 三目运算 功能:为真后可根据条件选择成立两个不同的表达式 如果表达式1值为真选择表达式2 如果表达式1值为假选择表达式3 案例 #define _CRT_SECURE_NO_WARNINGS ...

  8. c语言的左移和右移

    转自:https://www.cnblogs.com/myblesh/articles/2431806.html 先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例 ...

  9. c语言的左移、右移

    先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如: int i = 1; i = i << 2;  //把i里的值左移2位 也就是说,1的2进制是0 ...

随机推荐

  1. 【Java】 剑指offer(65) 不用加减乘除做加法

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.×. ...

  2. c++中关于用stringstream进行的类型转化

    1.将int转化成string类型 #include <iostream> #include <sstream> using namespace std; int main() ...

  3. X分钟速成Python3

    参考博客:Python3 从入门到开车  (与以下代码无关) 源代码下载: learnpython3-cn.py Python是由吉多·范罗苏姆(Guido Van Rossum)在90年代早期设计. ...

  4. 类属性判断 hasattr getattr

  5. FastAdmin 的上传代码在哪里?

    FastAdmin 的上传代码在哪里? FastAdmin 默认是通过 Ajax 上传到本地. 使用 admin/ajax/upload 方式返回 url. 代码文件地址在 application\a ...

  6. 程序员之路:python3+PyQt5+pycharm桌面GUI开发(转)

    程序员之路:python3+PyQt5+pycharm桌面GUI开发 http://blog.sina.com.cn/s/blog_989218ad0102wz1k.html 先看效果: 图 1 没错 ...

  7. ubuntu安装nodejs出现./config.gypi错误

    报错的内容如下: xxx@xxx [/usr/local/src/node-v0.8.3]# ./configure { 'target_defaults': { 'cflags': [], 'def ...

  8. Python3基础之字典

    Python数据类型之字典(Dictionary) 字典特征 特征 可变.无序.映射.键值对 形式 {key0:value0, key1:value1, key2:value3, ..., } key ...

  9. ECS——安装nginx

    安装nginx和配置nginx.conf文件 进入home目录,执行以下命令: wget https://nginx.org/download/nginx-1.14.0.tar.gz 下载完成后,执行 ...

  10. 闪烁的LED灯

    /* Main.c file generated by New Project wizard * * Created: 周五 五月 5 2017 * Processor: 80C31 * Compil ...