C语言数组的左移函数 c语言数组移位操作

C\u8bed\u8a00\u6570\u7ec4\u600e\u4e48\u5de6\u79fb\uff1f

//\u7528\u4e00\u4e2a\u5faa\u73af\u5c31\u53ef\u4ee5\u5b9e\u73b0\u6570\u7ec4\u7684\u5faa\u73af\u5de6\u79fb\uff1aint i,n,m;//temp\u8868\u793a\u5de6\u79fb\u4f4d\u6570int a[n];for(i=0;i<n-m;i++)a[i]=a[i+m];//\u6b64\u65f6\u7684\u6570\u7ec4\u4e2a\u6570\u4e3an-m

\u601d\u8def\uff1a
\u6240\u6709\u6570\u7ec4\u90fd\u79fb\u4f4d\uff0c\u90a3\u4e48\u5176\u4e2d\u4e00\u4e2a\u5143\u7d20\u7684\u503c\u7684\u6ea2\u51fa\u4f4d\u5c06\u548c\u76f8\u90bb\u7684\u5143\u7d20\u8fdb\u884c\u5408\u5e76\uff0c
\u56e0\u6b64\u53ea\u8981\u8bb0\u4f4f\u4e0a\u4e00\u5143\u7d20\u7684\u6ea2\u51fa\u4f4d\uff0c\u5728\u4e0b\u4e00\u5143\u7d20\u79fb\u52a8\u540e\u5408\u5e76\u5373\u53ef\u3002

#define ELEMCNT 3 //\u5b9a\u4e49\u6570\u7ec4\u5143\u7d20\u4e2a\u6570
char a[ELEMCNT]; //\u88ab\u64cd\u4f5c\u7684\u5143\u7d20
char exceedA=0,exceedB=0;//\u8bb0\u5fc6\u6ea2\u51fa\u4f4d\u7528\u7684\u53d8\u91cf\uff0c\u5176\u4e2dexceedA\u4e3a\u4e0a\u4e00\u5143\u7d20\u6ea2\u51fa\u503c\uff0cexceedB\u4e3a\u672c\u5143\u7d20\u6ea2\u51fa\u503c
//\u5b9a\u4e49\u6574\u4f53\u79fb\u52a8\u51fd\u6570\uff0c\u5176\u4e2dk\u4e3a\u5de6\u79fb\u4f4d\u6570
void LeftElem(int k){
int i;
char Msk=0;//\u7528\u4e8e\u8ba1\u7b97\u6ea2\u51fa\u4f4d\u7684\u63a9\u7801\uff0c\u5982k=6\u65f6\uff0c\u5176\u63a9\u7801\u503c\u4e3a00000011(\u4e8c\u8fdb\u5236)
for (i=0;i<8-k;i++){
Msk=Msk|(1<<i);
}
//\u79fb\u52a8\u6240\u6709\u6570\u7ec4\u5143\u7d20,i\u503c\u5bf9\u5e94\u6570\u7ec4\u5143\u7d20\u4e0b\u6807i-1
for (i=ELEMCNT;i>0;i--){
exceedB=(a[i-1]&(~Msk))>>(8-k);//\u8ba1\u7b97\u6ea2\u51fa\u6570\u636e
a[i-1]=a[i-1]<<k+exceedA;
exceedA=exceedB;
}}

//下面是将数组左移的函数void fun(char *a, int *length)//length为字符串a的长度{ for(int i = 0; i < length - 2; i++) { a[i] = a[i+2]; }*length = (*length) - 2; } //如果只是输出左移两位的结果,可以用下面这个函数void fun(char *a, int length){ for(int i =2; i < length; i++) { printf("%c",a[i]); }}

//用一个循环就可以实现数组的循环左移:
int i,n,m;//temp表示左移位数
int a[n];
for(i=0;i<n-m;i++)a[i]=a[i+m];//此时的数组个数为n-m


#include<stdio.h>
#define N 10
void fun(int *a,int n,int x) { int i,j,k;
for ( i=0;i<x;i++ ) { k=a[0]; for ( j=0;j<n-1;j++ ) a[j]=a[j+1]; a[n-1]=k; }
}
void main() { int a[N],i,x;
printf("Enter %d integers: ",N); for ( i=0;i<N;i++ ) scanf("%d",&a[i]);
printf("Enter x: "); scanf("%d",&x);
fun(a,N,x);
printf("After Circle left shift %d bit: ",x); for ( i=0;i<N;i++ ) printf("%d ",a[i]);
printf("\n");
}

  • C璇█鏁扮粍鐨勫乏绉诲嚱鏁
    绛旓細//涓嬮潰鏄皢鏁扮粍宸︾Щ鐨勫嚱鏁void fun(char *a, int *length)//length涓哄瓧绗︿覆a鐨勯暱搴 for(int i = 0; i < length - 2; i++) { a[i] = a[i+2]; }*length = (*length) - 2; } //濡傛灉鍙槸杈撳嚭宸︾Щ涓や綅鐨勭粨鏋滐紝鍙互鐢ㄤ笅闈㈣繖涓嚱鏁皏oid fun(char *a, int length){ for(int...
  • c璇█鏁扮粍宸︾Щ?
    绛旓細鈥 (a[PosOut] << 8) | 0x00ff鈥濊〃绀哄厛鎶奱鏁扮粍涓PosOut浣嶇疆鐨勬暟鍊兼寜浣宸︾Щ8浣嶏紝鍐嶅皢寰楀埌鐨勭粨鏋滃拰0x00ff鍋氶昏緫鎴栨搷浣溿備緥濡傦紝a[2]=3锛岀敤浜岃繘鍒惰〃绀烘槸鈥11鈥滐紝閭d箞瀹冨乏绉8浣嶅緱鍒颁簩杩涘埗鈥11 0000 0000鈥滐紝鍐嶅拰0x00ff鍗斥1111 1111鈥滃仛閫昏緫鎴栨搷浣滐紝寰楀埌浜岃繘鍒垛11 1111 1111鈥滀篃灏辨槸鍗...
  • 姹C璇█澶у皬涓簄鐨勪竴缁鏁扮粍,鏁扮粍鍏冪礌鍚戝彸/宸﹀惊鐜綅绉籱浣嶇殑绠楁硶,涓嶈绋嬪簭...
    绛旓細a[n-1]=t; //鏈鍚庝竴涓厓绱犲鍒 } //宸︾Щ m 浣嶇浉褰撲簬 鍙崇Щ n-m 浣嶃
  • C璇█鍜屽崟鐗囨満涓鐨勫乏绉鍙崇Щ
    绛旓細delay02s( )锛 // 寤舵椂0.2s j= j<<1锛 // 宸︾Щ1浣 } j=0x80锛 // 璁剧疆鍙崇Щ鍒濆鍊糺涓0x80 for (i=0锛沬<8锛沬++){ P1= ~ j锛沝elay02s( )锛沯= j>>1锛 // 鍙崇Щ1浣 } } }
  • 鐢c璇█缂栧啓涓绋嬪簭,鎺ユ敹浠庨敭鐩樹笂杈撳叆鐨勬暣鏁癷,灏鏁扮粍寰幆宸︾Щi浣
    绛旓細include"stdio.h"void main(){ int a[10]={1,2,3,4,5,6,7,8,9,10},b[10];int i,j,k;printf("绉讳綅鍓: ");for(k=0;k<10;k++)printf("%d ",a[k]);printf("\n");printf("Input i: ");scanf("%d",&i);j=i%10;for(k=0;k<10;k++){ if(j==10)j=0;b[k]=...
  • C璇█缂栫▼棰:绉讳綅鍑芥暟,鏃㈣兘寰幆宸︾Щ鍙堣兘寰幆鍙崇Щ
    绛旓細//鍏堥珮浣嶇Щ鍔紝鍐嶄綆浣嶇Щ鍔ㄥ悗锛屼袱鑰呮寜浣嶆垨锛岀浉褰撴妸浣庝綅婧㈠嚭鐨勫張娣诲姞鍒颁簡楂樹綅锛屽疄鐜颁簡寰幆鐨勬晥鏋 } else { return (num << (sizeof(unsigned)*8 - abs(n))) | (num >> abs(n)); }}void main(void) { printf("%u\n", fun(2, -34));} ...
  • C璇█闂 鎬庝箞瀹炵幇涓涓鏁扮粍寰幆宸︾Щ
    绛旓細鍏跺疄寰堢畝鍗曪紝灏嗙涓涓瘮濡俛[0]鐢ㄤ竴涓彉閲忎繚瀛橈紝鐒跺悗灏嗗悗涓涓厓绱犵殑鍊艰祴缁欏墠涓涓紝鏈鍚庡皢淇濆瓨a[0]鐨勫彉閲忕殑鍊艰祴缁欐渶鍚庝竴涓厓绱狅紝寰幆 銆傚浜庝竴涓鏁扮粍锛屽簲璇ョ敤鍙岄噸寰幆瀹炵幇锛屽寰幆浠h〃浣犻渶瑕宸︾Щ鐨勬鏁帮紝鍐呭惊鐜嵆灏嗘瘡涓涓厓绱犲乏绉
  • c璇█宸︾Щ銆佸彸绉荤殑瑙勫垯鏄粈涔?
    绛旓細SHR锛堢畻鏁板彸绉伙級锛歴hift logical right SAL锛堥昏緫宸︾Щ锛夛細shift arithmetic left SAR锛堥昏緫鍙崇Щ锛夛細shift arithmetic right ROL锛堝惊鐜乏绉伙級锛歳otate left ROR锛堝惊鐜彸绉伙級锛歳otate right RCL锛堝甫杩涗綅鐨勫惊鐜乏绉伙級锛歳otate left through carry RCR锛堝甫杩涗綅鐨勫惊鐜彸绉伙級锛歳otate right through carry ...
  • C璇█涓宸︾Щ鍑芥暟鍜屽彸绉诲嚱鏁板垎鍒槸浠涔,浣跨敤鏍煎紡鏄粈涔?
    绛旓細C璇█鎬诲苟娌℃湁宸︾Щ鍑芥暟鍜屽彸绉诲嚱鏁般傚乏绉诲拰鍙崇Щ鏄綅杩愮畻绗︼紝浠呬粎閫傜敤浜庢暣鏁板瀷鐨勬暟鎹
  • 杩欎釜鏄釜c璇█绋嬪簭,鍔熻兘灏10涓暣鏁板厓绱鏁扮粍鐨鍊煎惊鐜宸︾Щ4娆
    绛旓細include<stdio.h> void vet(int *r,int n){ int a_end,s,*b,g;for(s=0;s<=n;s++)a_end=*(r+9);for(b=r+9;b>=r;b--)b=*(r-1);r=a_end;} int main(){ int a[10],i;int * p;p = a;void vet(int *,int);printf("please input ten size");for(i=0;i<...
  • 扩展阅读:c语言数组函数怎么调 ... c语言数组左移一位 ... c语言清空数组函数 ... c语言数组a i 9 i+2 5 ... c语言中的左移和右移 ... c语言数组求平均值 ... c语言的左移怎么算 ... c语言数组从小到大排序 ... c语言数组里的数相加 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网