关于C语言左移右移的问题

关于C语言左移右移的问题,第1张

在现代大多数编译系统中,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、单片机右移到左移,左移到右移的花样流水灯程序问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10071619.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存