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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Training2:位操作訓(xùn)練

2019-11-11 06:38:49
字體:
供稿:網(wǎng)友


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

#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;

}

 

題目二:輸入一個整數(shù)a,再輸入兩個整數(shù)p1,p2(p1,p2<32),輸出該整數(shù)的二進(jìn)制表示方法中從右端開始的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;

}

 

題目三:輸入一個整數(shù)a,再輸入兩個整數(shù)p1,p2(p1,p2<32),將該整數(shù)的二進(jìn)制表示方法中從右端開始的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");

}

 

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

#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位的整數(shù)a,使用按位異或^運(yùn)算,生成一個新的32位整數(shù)b,使得該整數(shù)b的每一位等于原整數(shù)a中該位左右兩邊兩個bit位的異或結(jié)果

提示: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;

}

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 扎兰屯市| 尚义县| 玛纳斯县| 商河县| 蒙自县| 苏尼特左旗| 沙河市| 嘉善县| 抚顺市| 汕尾市| 岳西县| 尤溪县| 永嘉县| 紫阳县| 泗洪县| 天峻县| 且末县| 大理市| 合江县| 通江县| 那坡县| 盖州市| 清徐县| 太湖县| 雅安市| 桦南县| 慈溪市| 小金县| 策勒县| 黔江区| 沂源县| 普兰县| 麟游县| 赤峰市| 和政县| 夏津县| 桐城市| 内丘县| 冀州市| 孟村| 沙湾县|