| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4160 人关注过本帖
标题:移位操作最多几位
只看楼主 加入收藏
半年蚂
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-8-6
收藏
 问题点数:0 回复次数:10 
移位操作最多几位
移位操作最多几位
2011-08-25 18:13
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
随意
2011-08-25 18:22
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
程序代码:
#include <stdio.h>

int main(int argc, char* argv[])
{
    int a = 0x80000000;
    printf("%x\n",a<<1);
    a = 0x00000001;
    printf("%x\n",a>>1);
    return 0;
}
但是别移过了头

                                         
===========深入<----------------->浅出============
2011-08-25 18:29
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
其实有时候也可以故意移过头~
所谓的循环移位嘛
2011-08-25 18:36
半年蚂
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-8-6
收藏
得分:0 
一次移位操作!!
2011-08-26 07:34
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
回复 5楼 半年蚂
还是随意
2011-08-26 10:18
Luminal
Rank: 6Rank: 6
等 级:侠之大者
帖 子:140
专家分:470
注 册:2011-8-24
收藏
得分:0 
看到楼主为了这个移位运算的问题如此纠结,只好替楼主去收集点资料了
想必楼主很忙,没有时间去看这些基础的,理论上的东西,
基础是靠自己打的,没有谁可以一夜之间让你有了基础,大牛们是不喜欢跟没有
基础的交流什么编程问题的,我想这一点应该是很多朋友们的共识吧!
好了,少数废话,多干实事!(声明:以下资料大多来源于百度搜索)

移位是一个二元运算符,用来将一个二进制数中的每一位全部都向一个方向移动指定位,溢出的部分将被舍弃,而空缺的部分填入一定的值。在类C语言中,左移使用两个小于符号"<<"表示,右移使用两个大于符号">>"表示。
位移位运算是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对 象,第二个运算对象是所移的二进制位数。
左移 就是: 丢弃最高位,0补最低位运算符是<<             a<<2; //a值不变
右移的概念和左移相反,就是往右边挪动若干位,运算符是>>  a>>2; //a值不变
右移对符号位的处理和左移不同,对于有符号整数来说,比如int类型,右移会保持符号位不变
例如:
int i = 0x80000000;
i = i >> 1;    //i的值不会变成0x40000000,而会变成0xc0000000
就是说,符号位向右移动 后,正数的话补0,负数补1,也就是汇编语言中的算术右移.同样当移动的位数超过类型的长度时,会取余数,然后移动余数个位.
 负数10100110 >>5(假设字长为8位),则得到的是 11111101
//============================================================================
以上这些只是一些摘录,希望楼主还是自己找些相关的书籍或资料深入的学习一下,我想你只要不是
问一些基础概念方面的问题,会有很多朋友愿意与你共同探讨的!
                          打扰了!
2011-08-26 14:55
半年蚂
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-8-6
收藏
得分:0 
唉,其实我是在问:是不是8位计算机被移位的数据是8位、16位计算机被移位的数据是16位、32位计算机被移位的数据是32位啊?
象汇编里的shl ax,1 、是不是也有shl al,1、shl eax,1呢?
手里只有七、八年出产的手机,不让用电脑,连试试都不行啊,悲惨啊!!
2011-08-27 08:29
Luminal
Rank: 6Rank: 6
等 级:侠之大者
帖 子:140
专家分:470
注 册:2011-8-24
收藏
得分:0 
回楼主,如果你要问的是汇编指令shl的问题,呵呵,这里是c语言!
2011-08-27 09:06
半年蚂
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-8-6
收藏
得分:0 
C语言不是要转换成汇编语言吗,位数不同,效率不同啊!
你不是知道汇编指令吗,应该知道些吧,可不要藏私啊,
2011-08-27 11:12
快速回复:移位操作最多几位
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016939 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved