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. Python:给定一个不超过5位的正整数,判断有几位

    方法一:作比较 [root@python markPy]# cat five.py #!/usr/bin/python3 a=int(input(">>>>" ...

  2. freemarker数据格式化问题(即数值超过三位后自动添加逗号问题)

    实际数据:{value:1007, name:'通用设备'}, 浏览器回显数据: 得出: freemarker 当数据超过3位的时候,会自动用逗号截取 格式如:1,007 解决办法: 加?c,如:${ ...

  3. 用Python6种方法:给定一个不超过5位的正整数,判断有几位

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

  4. C语言 右左法则

    C指针声明解读之左右法则 C语言所有复杂的指针声明,都是由各种声明嵌套构成的.如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法.不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定 ...

  5. css实现一行居中显示,两行靠左显示,超过两行以引号省略

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 数据库SQL语言学习----左外连接,右外连接,外连接,自然连接的形象对比

    现在有两张表,一张Student 另一张Score   1.查询每个学生及其选修课程的情况: 自然连接,Sno在Cscore中找不到就不显示,Cno在Cscore中找不到也不显示 SELECT Stu ...

  7. 全国计算机等级考试二级教程-C语言程序设计_第15章_位运算

    位运算,不适用于实数,仅仅适用于整数.字符. C语言的位运算只能操作整数.字符,实数是指数方式表示的,不适用于位运算. #define _CRT_SECURE_NO_WARNINGS #include ...

  8. C语言浮点数除法可以精确到多少位小数

    double型的两个数相除,得到的浮点数能精确到多少位呢..用我家电脑做了个实验,编译器是Code::Blocks 13.12. 然后用电脑自带的计算器算的结果和C语言算的结果比较如图. 第一例里a= ...

  9. C语言高级程序设计——进制算法以及位算符号

    语言不够官方:意会: 数据储存运算是以二进制的,二进制数有原码 反码 补码三种.通常所说的二进制就是原码.(语言不官方) 原码 :4的原码可以为:0000 0100:最高位0 可以为符号数 反码:正数 ...

随机推荐

  1. IIS6批量转移网站

    IIS6.0有个导出配置的功能,但你却找不到界面上的直接导入配置功能,需要用到操作系统自带的iiscnfg.vbs脚本. 1.导出当前的IIS网站配置 打开Internet信息服务(IIS)---&g ...

  2. 制作BibTex文件

    上一篇日志中讲到了在LaTeX中使用BibTex管理参考文献,这篇日志具体总结下如何制作BibTex文件. 制作BibTex文件,主要有以下几种方法: 手工制作: 直接从期刊数据库中下载: 借助Goo ...

  3. ios开发:GCD多线程

    ios有三种多线程编程技术,分别是NSThread,Cocoa NSOperation和GCD,GCD全称Grand Central Dispatch 是Apple开发的一个多核编程的解决方法,在iO ...

  4. Objective-C 【完整OC项目-购票系统-系统分析-代码实现】

    电影院买票系统/演唱会买票系统 需求分析: 首先我们进入系统,然后会选择买电影票还是买演唱会票,所以这牵扯两个系统的合成.但是我们知道都是买票系统,所以我们可以先创建一个类,属于购买电影票和演唱会的票 ...

  5. WCF学习笔记 -- 如何用C#开发一个WebService

    假设所有工程的命名空间是demo. 新建一个C#的ClassLibrary(类库)工程. 在工程引用中加入System.ServiceModel引用. 定义接口,你可以删除自动生成的代码,或者直接修改 ...

  6. PHP自定义日期英文格式 Feb 11,2015

    背景:[PHP小工具]项目中,经常会要求多版本语言支持,而日期也是必不可少的组成元素. 英文日期书写顺序分英式和美式,举例如. 美国:月日年(January 8th,2014 或 January 8, ...

  7. Php 操作事务

    PHP来操作数据库 关于事务操作 连接数据 mysql_connect('localhost','root','123'); 设置字符集 mysql_query('set names utf8'); ...

  8. spring aop配置文档部分翻译

    欢迎转载交流: http://www.cnblogs.com/shizhongtao/p/3476973.html 下面的文字来自官方文档的翻译,具体事例以后奉上. Advisors "ad ...

  9. Visual Studio通过Web Deploy发布网站报错:An error occurred when the request was processed on the remote computer.

    这个问题很奇怪,不管我怎么重启服务器和自己的开发机,都没有用. 在网上找了很多资料,有说可以尝试去读Windows的错误日志,然后通过日志找原因…(详见Stackoverflow:http://sta ...

  10. excl剔除不合格数据求平均值

    excl剔除不合格数据求平均值 trimmean函数 正态分布: CONFIDENCE.NORM 函数