
在现代大多数编译系统中,int型的数是4个字节(32位)~
如int
a
=
222;
在计算机中用2进制表示为
0000
0000
0000
0000
0000
0000
11011110
左移两位以后是:
0000
0000
0000
0000
0000
0011
01111000
右端补0
正好是888~
你不要忘了左边还有0
啊!没有丢弃高位的那两个1!
public class Prog32{
public static void main(String[] msg){
// 输入一个长整数
Scanner scan = new Scanner(Systemin);
long l = scannextLong();
scanclose();
// 以下截取字符
String str = LongtoString(l);
char[] ch = strtoCharArray();
int n = chlength;
if(n<7)
Systemoutprintln(" 输入的数小于 7 位! ");
else
Systemoutprintln(" 截取的 4~7 位数字: "+ch[n-7]+ch[n-6]+ch[n-5]+ch[n-4]);
}
}
LED灯右移到最右边后向左移时是这样的:右移一位→第二个延时程序→第一个延时程序→右移右移一位→第二个延时程序→第一个延时程序,这样不断循环,循环到最左边,就开始了右移的程序。
这样左移的延迟大一点的!
语法上来说有两个问题,如下:
#include "stdioh"void fun( int a[],int b)
{
int i,m;
for(i=0;i<b;i++)
{
m=a[b-1-i];
a[b-1-i]=a[i];
a[i]=m;
}
}
void main()
{
const int n=5; //定义数组时,数组大小必须指定,可以用const定义一个常量,也可以用宏定义
int i;
printf("please input n:");
// scanf("%d",&n);
if(n>=1&&n<=9)
{
int a[n+1]={0}; //即这里不能在a[]里定义一个不确定大小的数
for(i=1;i<n+1;i++)
{
a[i-1]=i;
printf("%3d",i);
}
// fun(a[n+1],n+1);//这里a[n+1]是一个整数类型的,函数定义时第一个参数是数组类型,故参数不匹配
fun(a,n+1);//数组传递参数时只需数组名即可
for(i=1;i<n+1;i++)
{
printf("%3d",a[i-1]);
}
}
}
以上就是关于关于C语言左移/右移的问题全部的内容,包括:关于C语言左移/右移的问题、取一个整数 a 从右端开始的 4 ~ 7 位。 程序分析:可以这样考虑: (1) 先使 a 右移 4、单片机右移到左移,左移到右移的花样流水灯程序问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)