C语言的左位移能不能超过8位?比如b=a<<20; 这样可以不?如果可以,一个字节只有8个位,左移20位是不是连右边其它字节的12个位(20-8)也一起左移?
字符变量左移八次后,所有的位都移出去了,继续左移当然可以,但没有意义,因为左移八次后八个位都是0,再移没有意义
追答:
他左边的字节不受影响

追问:
int变量a(32个二进制位)左移25位的话,它是32个二进制位一起左移还是每8个二进制位单独左移25位?

比如a<<=25  它是以全部32个位为整体一起左移25位吗?也就是32位移出去25位?

还是这32位分成四个字节,然后以字节为单位,每个字节分别左移25位?

追答:
移位是针对所有二进制位的,不是一个字节。a<<=25 每移动一次,32个位都跟着一起向左移一位。

追问:
你说的char变量左移8位后就全都移出去了,再移就没有意义了因为八个位都是0

但我试过了好像不是这样

比如char ch=1; printf("%d",ch<<8);结果却输出256

printf("%d",ch<<25);结果就输出33554432

按道理char变量ch左移7位应该就是-128,再移下去就全变成0了,但实际结果却是移七位的时候还没有变成-128,而是128,再移下去不但没有变成0,反而输出结果更大。。 不知道为什么会这样

追答:
其实你问的是另一个问题了

你以%d格式输出就不是原来的类型了

追问:
已经定义了char ch,就相当于定义给他分配一个字节,至于%d和%c只是把存在内存中的那串二进制以不同形式输出而已,

一个char ch最大数就是01111111

按道理左移八位就全部都移出去了,但实际结果不是这样

追答:
你写成ch<<8或ch<<25,输出的是表达式的值,而不是变量的值,在<<后面加上=看看,结果是不同的,这时输出的是变量的值

追问:
哦,明白了,ch<<25并不是赋值给ch

谢谢你了

收起
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!

C语言的左位移能不能超过8位?相关推荐

  1. C语言的左值(lvalue)和右值(rvalue)的含义是什么?

    C语言的左支(lvalue)和右值(rvalue)的含义是什么? (1)左值就是一个可被存储的单元,右值就是一个可被读取的数据.      (2)左值必须是一个被明确了的内存存储单元,可以用来被赋值: ...

  2. c语言从键盘输入一个不超过8位的正的十六进制数字符串,蓝桥基础练习 十六进制转十进制...

    问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英文字母A.B.C.D.E.F表示. 样例输入 FFFF 样例输出 6 ...

  3. JS如何处理超过32位的整数的位运算

    这个问题是已经毕业的学员李佳问到的,本想在网上查一下给他个答案省事.转念一想,如果网上如果他能在网上查到看的明白的方案应该不至于来问我.索性自己给他解一解.因为貌似这个问题还是有点意思的. 首先,要知 ...

  4. 数字太大了,计算加法、减法会报错,结果不正确?怎么办?用JavaScript实现大数据(超过20位的数字)相加减运算。

    加法伺候 //超过20位数值相加---------------------------------------- function bigNumAdd(a, b) {if (!(typeof a == ...

  5. C语言取出一个数的每一位

    C语言取出一个数的每一位 int main() {long t = 123456789;int a, b, c, d, e, f, g, h, i;a = t % 10;b = t / 10 % 10 ...

  6. Python:给定一个不超过5位的正整数,判断有几位

    方法一:作比较 a=int(input(">>>>")) if a<10: print(1) elif a<100: #第一个条件已经过滤了大于 ...

  7. C语言重复加一个数的所有位数字的算法(附完整源码)

    C语言重复加一个数的所有位数字的算法 问题举例 C语言重复加一个数的所有位数字的算法完整源码(定义,实现,main函数测试) 问题举例 例如给定num = 38,过程类似于:3 + 8 = 11,1 ...

  8. excel保存超过15位数据不变科学计数法的方法

    1.csv保存超过11位的长数字时会变成科学计数法,通过设置单元格格式通用0可恢复为数字.当长度超过15位时恢复后超过15位的部分全部为零是因为csv只显示15位有效数字,解决办法在输入前先输入英文状 ...

  9. 科学数字_Excel分列时拒绝让超过15位的数字变成科学计数法

    分列时让超过15位的数字不变成科学计数法 Excel情报局 生产搬运分享Excel基础技能 Excel知识青年 用1%的Excel基础搞定99%的日常工作 做一个有文艺范的Excel公众号 Excel ...

最新文章

  1. 贵州二本好的计算机专业,官方支持贵州大学创建双一流大学,贵州唯一的211,二本也有机会...
  2. 关于如何准备一份制胜简历的清单
  3. 0xc0000225无法进系统_电脑无法启动,出现0xc0000225一到错误,该怎样解决!
  4. multiprocessing创建自定义进程类
  5. Swing应用程序中的CDI事件可将UI与事件处理分离
  6. 6种常用Bean拷贝工具一览
  7. mysql8.0 创建用户并授权
  8. 【宇润日常疯测-004】JS 遍历数组如何快!快!快!
  9. 微服务架构的分布式事务解决方案
  10. Cocos2d-x Touch事件处理机制(better)
  11. 浅谈Borg/YARN/Mesos/Torca/Corona一类系统
  12. [月报] 掘金翻译计划月报 — 2018 年 11 月
  13. Multisim卸载删除经历(已重新安装)
  14. 手游脚本_雷电模拟器
  15. 一篇文章带你认识【集线器、网桥、交换机、路由器、网关】
  16. PostgreSQL 透明加密(TDE,FDE) - 块级加密
  17. vue-cli使用element-ui分页组件
  18. 续编-联想原装系统OEM系统联想出厂系统联想原装系统Lenovo ThinkPad ThinkBook出厂预装系统原厂系统
  19. HTTP解析库http-parser简介及使用
  20. nodeMCU_esp8266管脚示意图/特殊管脚的使用避坑(D3/D4/D8/..)

热门文章

  1. 润乾报表中API动态合并格,连续显示行号
  2. Day7 牛客 回文素数
  3. 内含福利|云栖攻略·解锁视频消费新方式
  4. Xtrabackup的备份恢复操作
  5. [微信小程序]聊天对话(文本,图片)的功能(完整代码附效果图)
  6. UVa 10507 - Waking up brain
  7. 中国无线电运动协会章程
  8. 基于51单片机实现旋转LED灯报警(Proteus仿真)
  9. 多路选择器,加法器原理及verilog实现
  10. 520特辑 有一个IDC运维工程师的女朋友是什么体验