C语言经典100例题(55)--从一个整数a中把从右端开始的4-7位取出来

目录

题目

问题分析

右移操作符

左移操作符

方法一

方法二 

运行结果


题目

用c语言从一个整数a中把从右端开始的4-7位取出来  

问题分析

右移操作符

        右移操作符是一种位运算符,用于将二进制数向右移动指定的位数。它通常用符号" >> "表示。右移一位相当于将二进制数除以2,右移n位相当于将二进制数除以2的n次方。

        例如,二进制数1101右移两位,结果为0011,相当于十进制数13除以4。

        在计算机程序中,右移操作符用于对数据进行位处理,例如提取某些位信息,对数据进行分组,加密等。

左移操作符

        左移操作符是一种位运算操作符,通常用于将二进制数向左移动指定的位数。在大部分编程语言中,左移操作符用符号“<<”表示。

        例如,将二进制数1010(十进制数为十)左移两个位,则得到结果为0100(十进制数为四)。

        在计算机中,左移操作符可以用于加速计算,因为左移一位相当于乘以2的1次方,左移n位相当于乘以2的n次方。因此,左移操作符常用于优化代码的性能。

方法一

 可以使用位运算和移位操作来取出这些位,具体实现如下:

#include <stdio.h>int main() {int a = 0b1010111101010101; // 假设a为二进制数1010111101010101int b = (a >> 3) & 0b1111; // 取右端第7~4位,即把a右移3位再与0b1111(二进制数1111)按位与printf("%d\n", b); // 输出结果为1010,即十进制数10return 0;
}

        其中,>>表示右移操作,把二进制数向右移动指定的位数,即把右端的位数舍去;&表示按位与运算,两个二进制数按位取与,即对应位置上的数都为1时结果为1,否则为0。在此代码中,首先将a向右移动3位,即保留右端第7~4位,然后再与0b1111按位与,即把左侧的位数都清零,最终得到的结果就是从右端开始的4-7位。 

方法二 

(1)先使a右移4位。
(2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)
(3)将上面二者进行&运算。

#include <stdio.h>
int main()
{unsigned a, b, c, d;scanf("%o", &a);//输入一个二进制数b = a >> 3;  //(1)先使a右移3位。c = ~(~0 << 4);  //(2)设置一个低4位全为1, 其余全为0的数。d = b & c;          //(3)将上面二者进行& 运算printf("%o\n%o\n", a, d);
}

运行结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/75779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

W11下CMake MinGW配置OpenCV和Qt

&#x1f482; 个人主页:风间琉璃&#x1f91f; 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主&#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 前言 前几天将cuda版本的opencv给编译成功了&#xff0c;当时用的VS的MSVC&…

python包导入原理解析

原文链接&#xff1a; https://www.cnblogs.com/hi3254014978/p/15317976.html 根据编程经验的不同&#xff0c;我们在运行程序时可能经常或者偶尔碰到下面这些问题&#xff0c;仔细观察后会发现这些问题无一例外都出现了一个相同的短语&#xff0c;很容易就可以发现&#xff0…

day37 线程

一、线程安全 二、多线程并发的安全问题 当多个线程并发操作同一临界资源 由于线程切换实际不确定 导致操作顺序出现混乱 产生的程序bug 严重时出现系统瘫痪 临界资源 &#xff1a;操作该资源的完整流程同一时间只能被单一线程操作的资源 多线程并发会出现的各种问题、 如…

聊聊 HTMX 吧

写在前面 最近看了几篇关于 htmx 的文章&#xff0c;自己也去看了一眼官网&#xff0c;也去油管看了一下当时 htmx 发布会的时候他们的演示&#xff0c;下面说几点我对这个所谓的新型起来的技术的看法&#xff0c; 他的来源是什么 首先说一下他虽然是一个新型的技术&#xff0c…

jQuery选择器参考手册

选择器实例选取*$(“*”)所有元素#id$(“#lastname”)id“lastname” 的元素.class$(“.intro”)class“intro” 的所有元素.class,.class$(“.intro,.demo”)class 为 “intro” 或 “demo” 的所有元素element$(“p”)所有 <p> 元素el1,el2,el3$(“h1,div,p”)所有 <…

数据库管理系统,数据库,sql的基本介绍以及它们之间的关系

数据库管理系统&#xff08;Database Management System&#xff0c;简称DBMS&#xff09;是一种软件工具或系统&#xff0c;用于管理和维护数据库的创建、访问、更新和管理。DBMS允许用户在数据库中存储、检索和操作数据&#xff0c;同时提供了数据安全性、完整性和一致性的控…

Java 多线程系列Ⅶ(线程安全集合类)

线程安全集合类 前言一、多线程使用线性表二、多线程使用栈和队列三、多线程下使用哈希表 前言 在数据结构中&#xff0c;我们学习过 Java 的内置集合&#xff0c;但是我们知道&#xff0c;我们学过的大多数集合类都是线程不安全的&#xff0c;少数如 Vector&#xff0c;Stack…

小程序分销机制介绍,小程序二级分销功能有哪些?

为什么有越来越多的用户选择使用小程序&#xff1f;跟“高大上”的APP相比&#xff0c;小程序不仅可以减少下载安装的复杂流程&#xff0c;还具备操作便捷、沉淀私域数据的优势。蚓链分销小程序具备裂变二维码、实时分佣、分销身份升级、层级分佣、商品个性化佣金设定等功能&am…

TortoiseSVN 详细操作指南

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 热爱技术的小郑 1、引言 考虑以下几种情况&#xff1a; 你是否在一个…

设计模式-代理模式Proxy

代理模式Proxy 代理模式 (Proxy)1) 静态代理1.a) 原理解析1.b) 使用场景1.c) 静态代理步骤总结 2) 动态代理2.a) 基于 JDK 的动态代理实现步骤2.b) 基于 CGLIB 的动态代理实现步骤2.c) Spring中aop的使用步骤 代理模式 (Proxy) 代理设计模式&#xff08;Proxy Design Pattern&…

golang面试题:json包变量不加tag会怎么样?

问题 json包里使用的时候&#xff0c;结构体里的变量不加tag能不能正常转成json里的字段&#xff1f; 怎么答 如果变量首字母小写&#xff0c;则为private。无论如何不能转&#xff0c;因为取不到反射信息。如果变量首字母大写&#xff0c;则为public。 不加tag&#xff0c…

【Spring Cloud系统】- 轻量级高可用工具Keepalive详解

【Spring Cloud系统】- 轻量级高可用工具Keepalive详解 文章目录 【Spring Cloud系统】- 轻量级高可用工具Keepalive详解一、概述二、Keepalive分类2.1 TCP的keepalive2.2 HTTP的keep-alive2.3 TCP的 KeepAlive 和 HTTP的 Keep-Alive区别 三、nginx的keepalive配置3.1 nginx保持…

在Docker中运行PostgreSQL数据库

1.下载Docker 2.设置DockerHub账号 3.运行Docker并下载Image 4.启动PostgreSQL Image 5.连接到数据库运行SQL docker run --name some-postgres -p 5432:5432 -e POSTGRES_PASSWORDmysecretpassword -d postgres 开放端口从Docker容器到主操作系统&#xff0c;这将允许我们…

【GAN小白入门】Semi-Supervised GAN 理论与实战

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊🚀 文章来源:K同学的学习圈子论文原文:Semi-Supervised Learning with Generative Adversarial Networks.pdf在学习GAN的时候你有没有想过这样一个问题呢,如果我们生成的图像是带有标签的,例如数…

详解 sudo usermod -aG docker majn

这个命令涉及到几个 Linux 系统管理的基础概念&#xff0c;包括 sudo、usermod 和用户组管理。我们可以逐一地解析它们&#xff1a; sudo: sudo&#xff08;superuser do&#xff09;允许一个已经被授权的用户以超级用户或其他用户的身份执行一个命令。当使用 sudo 前缀一个命令…

Python总结上传图片到服务器并保存的两种方式

一、前言 图片保存到服务器的两种方法&#xff1a; 1、根据图片的 URL 将其保存到服务器的固定位置 2、根据 request.FILES.get("file") 方式从请求中获取上传的图片文件&#xff0c;并将其保存到服务器的固定位置 二、方法 1、图片的 URL 要根据图片的 URL 将…

连接云-边-端,构建火山引擎边缘云网技术体系

近日&#xff0c;火山引擎边缘云网络产品研发负责人韩伟在LiveVideoStack Con 2023上海站围绕边缘云海量分布式节点和上百T的网络规模&#xff0c;结合边缘云快速发展期间遇到的各种问题和挑战&#xff0c;分享了火山引擎边缘云网的全球基础设施&#xff0c;融合开放的云网技术…

数据结构——七大排序[源码+动图+性能测试]

本章代码gitee仓库&#xff1a;排序 文章目录 &#x1f383;0. 思维导图&#x1f9e8;1. 插入排序✨1.1 直接插入排序✨1.2 希尔排序 &#x1f38a;2. 选择排序&#x1f38b;2.1 直接选择排序&#x1f38b;2.2 堆排序 &#x1f38f;3. 交换排序&#x1f390;3.1 冒泡排序&#…

【MyBatis】三、ResultMap与多表查询的处理

ResultMap与多表查询的处理 当字段名与实类名不一致时 使用别名进行处理 字段名&#xff1a;emp_name 实体类名&#xff1a;empName 映射文件中写法&#xff1a; <select id"getAllEmp" resultType"Emp">select eid, emp_name empName, age, se…

210. 课程表 II(leetcode210,ArrayList类型的数组创建,拓扑排序)-------------------Java实现

210. 课程表 II&#xff08;leetcode210&#xff0c;ArrayList类型的数组创建&#xff0c;拓扑排序&#xff09;-------------------Java实现 题目表述 现在你总共有 numCourses 门课需要选&#xff0c;记为 0 到 numCourses - 1。给你一个数组 prerequisites &#xff0c;其…