u 实验目的
1、掌握按位运算的概念和方法,学会使用位运算符。
2、学会通过位运算实现对某些位的操作。
u 预习内容
见教材第十二章
u 实验重点
1、掌握按位运算的概念和方法,学会使用位运算符。
2、学会通过位运算实现对某些位的操作。
u 实验难点
学会通过位运算实现对某些位的操作。
u 实验内容
编写程序并上机运行:
1、编写一程序,检查所用的计算机系统的C编译在执行右移时是按照逻辑右移的原则,还是按照算术右移的原则进行操作。
2、编一个函数getbits,从一个16位的单元中取出某几位,用八进制数打印出来。
3、设计一个函数,使给出一个数的原码,能得到该数的补码。
u 参考例题
【例】 从键盘上输入1个正整数给int变量num,按二进制位输出该数。
#include "stdio.h"
main()
{ int num, mask, i;
printf("Input a integer number: ");
scanf("%d",&num);
mask = 1<<15; /*构造1个最高位为1、其余各位为0的整数(屏蔽字)*/
printf("%d=" , num);
for(i=1; i<=16; i++)
{ putchar(num&mask ? ’1’ : ‘0’); /*输出最高位的值(1/0)*/
num <<= 1; /*将次高位移到最高位上*/
if( i%4==0 ) putchar(‘,’); /*四位一组,用逗号分开*/
}
printf("\bB\n");
}
程序运行情况:
Input a integer number:1000 ←┘
1000=0000,0011,1110,1000B