国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Training2:位操作訓練

2019-11-11 07:22:58
字體:
來源:轉載
供稿:網友


題目一:請編寫一個c函數,該函數給出一個字節中被置為1的位的個數

#include <stdio.h>

 

int main()

{

int num, mask;

int count = 0;

int i;

char str[20];

 

PRintf("Please input a number:/n");

scanf("%d", &num);

 

    mask = 1 << 7;

 

for(i = 0; i < 8; i++)

{

if((num & mask ? '1' : '0') == '1')

{

count++;

str[i] = 1;

}

else

{

str[i] = 0;

}

num <<= 1;

}

    

printf("the number is:");

for(i = 0; i < 8; i++)

{

        printf("%d", str[i]);

}

printf("/n");

    printf("the number of one is %d./n", count);

 

    return 0;

}

 

題目二:輸入一個整數a,再輸入兩個整數p1,p2(p1,p2<32),輸出該整數的二進制表示方法中從右端開始的p1到p2位.

#include <stdio.h>

 

int main()

{

int num, mask;

    int p1, p2;

int i = 0;

int j;

char str[50];

 

printf("Please input a number:/n");

scanf("%d", &num);

    printf("Please input p1 p2(<32):/n");

scanf("%d %d", &p1, &p2);

    

mask = 1 << (p2 - 1);

 

    while(p2 >= p1)

{

if((num & mask ? '1' : '0') == '1')

{

str[i++] = '1';

            p2--;

num <<= 1;

}

else

{

    str[i++] = '0';

p2--;

    num <<= 1;

}

}

 

printf("the binary system is:");

for(j = i-1; j >= 0; j--)

{

printf("%c", str[j]);

}

printf("/n");

 

 

    return 0;

}

 

題目三:輸入一個整數a,再輸入兩個整數p1,p2(p1,p2<32),將該整數的二進制表示方法中從右端開始的p1到p2位取反后輸出

#include <stdio.h>

 

int main()

{

int num, mask;

    int p1, p2;

int i = 0;

int j;

char str[50];

 

printf("Please input a number:/n");

scanf("%d", &num);

    printf("Please input p1 p2(<32):/n");

scanf("%d %d", &p1, &p2);

    

mask = 1 << (p2 - 1);

 

    while(p2 >= p1)

{

if((num & mask ? '1' : '0') == '1')

{

str[i++] = '0';

            p2--;

num <<= 1;

}

else

{

    str[i++] = '1';

p2--;

    num <<= 1;

}

}

 

printf("the binary system is:");

for(j = i-1; j >= 0; j--)

{

printf("%c", str[j]);

}

printf("/n");

}

 

題目四:輸入一個整數a,再輸入兩個整數p(p<32),v(0|1),將該整數a的p位設置為v,輸出修改后的該整數的二進制表示.

#include <stdio.h>

 

int main()

{

int a, p, v, mask;

int i = 0;

char str[50];

 

printf("Please input a = ");

scanf("%d", &a);

printf("/n");

printf("Please input p(<32) = ");

scanf("%d", &p);

printf("/n");

printf("PLease input v(0/1) = ");

scanf("%d", &v);

printf("/n");

 

    mask = 1 << 31;

    

for(i = 0; i < 32; i++)

{

if((a & mask ? '1' : '0') == '1')

{

           str[i] = '1';

   a <<= 1;

}

else

{

str[i] = '0';

a <<= 1;

}

}

 

if(v == 0)

{

str[31-p] = '0';

}

else

{

str[31-p] = '1';

}

 

for(i = 0; i < 32; i++)

{

printf("%c", str[i]);

}

    printf("/n");

 

 

    return 0;

}

 

題目五:輸入一個32位的整數a,使用按位異或^運算,生成一個新的32位整數b,使得該整數b的每一位等于原整數a中該位左右兩邊兩個bit位的異或結果

提示:0 ^ 0 = 0; 1 ^ 1 = 0; 0 ^ 1 = 1; 1 ^ 0 = 1;

 

#include <stdio.h>

 

int main()

{

int a, mask;

int i;

int str[50], n_str[50];

    

printf("Please input a number:");

scanf("%d", &a);

    

mask = 1 << 31;

 

for(i = 0; i < 32; i++)

{

if((a & mask ? '1' : '0') == '1')

{

str[i] = 1;

a <<= 1;

}

else

{

str[i] = 0;

a <<= 1;

}

}

 

for(i = 0; i < 32; i++)

{

if(i == 0)

{

            n_str[i] = str[31] ^ str[i+1];

}

else if(i == 31)

{

n_str[i] = str[1] ^ str[i-1];

}

else

{

    n_str[i] = str[i-1] ^ str[i+1];

}

}

 

for(i = 0; i < 32; i++)

{

printf("%d", n_str[i]);

}

printf("/n");

 

    return 0;

}

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 澄城县| 清苑县| 永定县| 孙吴县| 巴青县| 若尔盖县| 盱眙县| 乌什县| 舟山市| 临安市| 龙门县| 许昌县| 江陵县| 尚义县| 玛纳斯县| 南丹县| 谢通门县| 新绛县| 泾川县| 固原市| 鄂温| 德惠市| 阿拉尔市| 乾安县| 苏尼特右旗| 板桥市| 鹤壁市| 根河市| 呈贡县| 桐柏县| 宁强县| 鹤岗市| 天等县| 永靖县| 英超| 嵊州市| 乐昌市| 汉寿县| 郁南县| 湖北省| 瑞丽市|