c语言第一周作业

来源:互联网 发布:js获取当前时间格式化 编辑:程序博客网 时间:2024/05/17 23:23
1.设置a的bit3位置为1,保持其他位不变
#include<stdio.h>
int main(int args,char ** argv)
{
 //设置a的bit3位置为1;
 int a=7;
 a=(1<<3) |a;
 printf("a=%d.\n",a);
 //15
// 0111
// 1000
//或  1111
 int b=0b11;
 b=(1<<3) |b;
 printf("b=%d.\n",b);
//给出常用数据类型的位数
printf("char=%d.\n",sizeof(char)) ;
printf("short=%d.\n",sizeof(short)) ;
printf("int=%d.\n",sizeof(int)) ;
printf("long=%d.\n",sizeof(long)) ;
printf("float=%d.\n",sizeof(float)) ;
printf("double=%d.\n",sizeof(double)) ;
  return 0;
 }
2.给定一个整数a,设置a的bit3-7位为1,保持其他位不变;
#include<stdio.h>
int main(int args,char ** argv)
{
//给定一个整数a,设置a的bit3-7位为1;
int a=1;
a=(0b11111<<3)|a;
//  11111000
//  00000001
//  11111001=249
printf("a=%d.\n",a); 
  return 0;
}
3.给定一个整数a,清楚a的bit15(为0),保证其他为不变
#include<stdio.h>
int main(int args,char ** argv)
{
//给定一个整数a,清楚a的bit15(为0),保证其他为不变
int a=0b1000000000001111;
printf("a=%d.\n",a);
a=~(1<<15)&a;//按位与
 printf("a=%d.\n",a);
   return 0;
}
4.给定一个整数a,清楚a的bit15-23w位置(为0),保证其他为不变
#include<stdio.h>
int main(int args,char ** argv)
{
//给定一个整数a,清楚a的bit15-23w位置(为0),保证其他为不变
int a=0b11000000010001111;
printf("a=%d.\n",a);
a=~(0b11111111<<15)&a;//按位与
 printf("a=%d.\n",a);
   return 0;
}
5.给定一个整数a,去除a的bit3-8w位置值
#include<stdio.h>
int main(int args,char ** argv)
{
//给定一个整数a,去除a的bit3-8w位置值
int a=0b11000000011111111;
printf("a=%d.\n",a);
a=(0b111111<<3)&a;//按位与
 printf("a=%d.\n",a);
a=a>>3;
  printf("a的bit3-8位的整数型是=%d.\n",a); //整数型出现
   printf("a的bit3-8位的10进制是=%u.\n",a); //10进驻型出现
  printf("a的bit3-8位的16进制是=%x.\n",a);//16进制出现
    return 0;
}
6.给定一个整数a的bit7-17位置赋值973(其余为不受影响)
#include<stdio.h>
int main(int args,char ** argv)
{
//给定一个整数a的bit7-17位置赋值973(其余为不受影响)
int a=0b11000000000000001;
printf("a=%d.\n",a); //98305
a=~(0b11111111111<<7)&a;//按位与
 printf("a=%d.\n",a); //1
//a=(0b1111001101<<7)|a;
a=(973<<7)|a;
 printf("a=%d.\n",a); //124545=973*2^7+1;
    return 0;
 
}
7.用c语言将一个整形数的bit7-17中的值加17(其余为不受影响)
#include<stdio.h>
int main(int args,char ** argv)
{
//用c语言将一个整形数的bit7-17中的值加17(其余为不受影响)
int a=0b11000000000000001;
printf("a=%d.\n",a); //98305
//0b011000000000000001
//方法1取出a中的bit7到17位和17按位取或。
//01100000000
//00000010001
//01100010001
//011000100010000001
int b=0b011000100010000001;
 printf("b=%d.\n",b);
 // 方法二 把17的二进制向左平移7位与a取或。
a+=(17<<7); //100481=98305+17*2^7
//输出整数a
 printf("a=%d.\n",a);
 //输出16进制a
  printf("a=%x.\n",a);
   //输出16进制100481=98305+17*2^7
   printf("a=%x.\n",100481);
    return 0;
 
}
8.用c语言给一个正式a的bit7-17位置赋值937,同时给bit21-25赋值17;
#include<stdio.h>
int main(int args,char ** argv)
{
//用c语言给一个正式a的bit7-17位置赋值937,同时给bit21-25赋值17;
int a=0b0001100011000000000000001;
printf("a=%d.\n",a); //98305
a=~(0b11111111111<<7)&a;//按位与,清空a的bit7-17位置
a=(937<<7)|a; // 给a的bit7-17位置赋值937
a=~(0b11111<<21)&a;//按位与,清空a的bit21-25位置
a=(17<<21)|a; // 给a的bit7-17位置赋值937
 printf("a=%d.\n",a); //124545=973*2^7+1;
    return 0;
 
}


原创粉丝点击