双目位运算计算的程序

任务八、执行位运算计算

这个任务要求编写一个能执行双目位运算计算的程序。其运行时截图类似:

位运算包括单目位运算和双目位运算两大类,分别对一个操作数及两个操作数进行按位运算。

 

单目位运算符仅一个按位取反~。这个运算符将构成一个数的每个二进制位1变为0、0变为1。例如:

~01001101 = 10110010

本实验任务不讨论单目位运算。

双目位运算符包括按位与&按位或|按位异或^以及按位左移<<按位右移>>共5种。如以上截图所示,这个程序对两个数进行&、|及^运算,然后对另外两个数进行<<、>>运算。您应该通过这个案例好好琢磨清楚这些运算是怎么回事!

现在,请参考以上截图及如下要求或说明编写程序。

  1. 创建一个C程序项目,项目名称应类似“xxx”,C语言源文件名称应类似“xxx.C”,程序应保存在“你的文件夹”内!
  2. 编写双目位运算计算函数bitoperate
    • 函数名称:bitoperate
    • 函数参数:两个短整型参数a和b,表示要进行位运算的两个数;一个字符型参数c,表示要进行哪一种运算,该参数的值为&、|、^、<、>,分别表示要进行按位与&、按位或|、按位异或^、按位左移<<、按位右移>>5种运算
    • 函数返回类型:短整型数的运算结果当然也是短整型,因此,函数的返回类型应声明为短整型
    • 函数功能:通过switch语句判断字符型参数c的值,并分别对短整数a和b进行所要求的位运算,最后通过return语句返回运算结果
  3. 编写显示一个数的二进制形式的函数printbinary
    • 函数名称:printbinary
    • 函数参数:仅一个短整型参数n,这个参数表示要以二进制形式显示的短整数
    • 函数返回类型:仅仅只是显示短整数的二进制形式,无需返回值,因此返回类型应定义为void
    • 函数功能:通过for循环语句,结合使用&、<<及唯一的三目运算符?:逐一显示短整数n中的每一位(您应该记得,短整数是用16个二进制位来表示的)。明白一点,假设参数n是短整数100(十进制),那么这个函数将显示如下16个二进制0000000001100100
  4. 在程序中按如下要求编写main函数
    • 声明两个短整型变量x和y
    • 给x、y分别赋值6289、169
    • 依次调用printformulas函数分别对x、y执行&、|、^运算
    • 给x、y分别赋值100、3
    • 依次调用printformulas函数分别对x、y执行<<、>>运算,将x(100)分别左移、右移y(3)位
    • 别忘记写system(“pause”)语句让程序暂停下来以看清楚运行结果!
  5. 运行并调试程序,确保程序正确无误!

通过watches窗口观察变量里的数据变化情况,将截图贴在实验结果处,并分析原因。

因为题目要求是这样,则可以知道代码(面向结果型)(要随意改数值的话改下代码就好)

#include <stdio.h>
#include <stdlib.h>

short bitoperate(short a, short b, char c)
{
    switch(c)
    {
        case '&':
            return a & b;
        case '|':
            return a | b;
        case '^':
            return a ^ b;
        case '<':
            return a << b;
        case '>':
            return a >> b;
        default:
            printf("无效的运算符!\n");
            return 0;
    }
}

void printbinary(short n)
{
    for(int i=15; i>=0; i--)
        {
        printf("%d", (n&(1<<i))?1:0);
        }
    printf("\n");
}

int main()
{
    short bitoperate(short a, short b, char c);
    void printbinary(short n);
    short x, y;
    x = 6289;
    y = 169;
    printf("  \t");
    printbinary(x);
    printf("& \t");
    printbinary(y);
    printf("= \t");
    printbinary(bitoperate(x, y, '&'));
    printf("\n");

    printf("  \t");
    printbinary(x);
    printf("| \t");
    printbinary(y);
    printf("= \t");
    printbinary(bitoperate(x, y, '|'));
    printf("\n");

    printf("  \t");
    printbinary(x);
    printf("^ \t");
    printbinary(y);
    printf("= \t");
    printbinary(bitoperate(x, y, '^'));
    printf("\n");

    printf("  \t");
    printbinary(x);
    printf("<<\t");
    printbinary(y);
    printf("= \t");
    printbinary(bitoperate(x, y, '<'));
    printf("\n");

    printf("  \t");
    printbinary(x);
    printf(">>\t");
    printbinary(y);
    printf("= \t");
    printbinary(bitoperate(x, y, '>'));
    printf("\n\n\n\n\n\n\n");


    x = 100;
    y = 3;
    printf("  \t");
    printbinary(x);
    printf("& \t");
    printbinary(y);
    printf("= \t");
    printbinary(bitoperate(x, y, '&'));
    printf("\n");

    printf("  \t");
    printbinary(x);
    printf("| \t");
    printbinary(y);
    printf("= \t");
    printbinary(bitoperate(x, y, '|'));
    printf("\n");

    printf("  \t");
    printbinary(x);
    printf("^ \t");
    printbinary(y);
    printf("= \t");
    printbinary(bitoperate(x, y, '^'));
    printf("\n");

    printf("  \t");
    printbinary(x);
    printf("<<\t");
    printbinary(y);
    printf("= \t");
    printbinary(bitoperate(x, y, '<'));
    printf("\n");

    printf("  \t");
    printbinary(x);
    printf(">>\t");
    printbinary(y);
    printf("= \t");
    printbinary(bitoperate(x, y, '>'));
    printf("\n");
    system("pause");
}

这仅作保存学习的记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值