当前位置: 首页 > news >正文

C语言笔试题:实现把一个无符号整型数字的二进制序列反序后输出

目录

题目

实例

方法一:直接交换

方法二:间接交换

拓展


题目

编写一个函数,将一个无符号整数的所有位逆序(在32位机器下)

实例

例如有一个无符号整数 

unsigned int num = 32;

unsigned int 在32位系统中占4个字节(32位)

32的二进制数是:       0000 0000 0000 0000 0000 0000  0010 0000

逆序后的二进制数是: 0000 0100 0000 0000 0000 0000  0000 0000

逆序后10进制数是   :  1 * 2^26 = 67108864

方法一:直接交换

思路:就是将num的最高位最低位依次取出并交换

问题来了: 如何依次取出最高位和最低位呢?

先说最低位:

可以利用 0 & 1 = 0 , 1 & 1 = 1的方法判断,即可用0x00000001和num进行&运算,如果结果是0则表示最低位是0,否是是1

同理:最高位将num与0x80000000进行&运算(因为8的二进制是10000),如果结果是0则表示最低位是0,否是是1

取出最高位最低位就可以进行交换。

if(最高位是1)

{

        将最低位变成1

        利用 0 | 1 = 1 , 1 | 1 = 1来进行操作

        num = num | 0x00000001;// 即最低位变成1

}  

else

{    

        将最低位变成0

        利用 0 & 1 = 1 , 1 & 1 = 1来进行操作

        num = num & 0xFFFFFFFE;// 即最低位变成0

        0xFFFFFFFE还可以换一种写法: ~(0x00000001) 这样方便移位

}

 最低位同理

unsigned int reverseBits(unsigned int num)
{int i;for (i = 0; i < 16; i++){// 左往右依次取出num最高位unsigned int hight = (num & 0x80000000 >> i) == 0 ? 0 : 1;// 右往左依次取出num最低位unsigned int low   = (num & 0x00000001 << i) == 0 ? 0 : 1;// 改变最低位if (hight == 1){// 低位变成1num |= (0x00000001 << i);}else{// 低位变成0num &= ~(0x00000001 << i);}// 改变最高位if (low == 1){// 高位变成1num |= (0x80000000 >> i);}else{// 高位变成0num &= ~(0x80000000 << i);}}return num;
}

方法二:间接交换

思路:就是将num的各个位取出并逆序存放在数组中,然后转成十进制

// 思路就是将各个位都取出来 逆序存在数组
unsigned int reverseBits_2(unsigned int num)
{int bits[32]; // 存放num的各个位int i;for (i = 0; i < 32; i++){if (((num >> i) & 1) == 1)// 判断num的最低位是0还是1{bits[32 - i - 1] = 1;}else{bits[32 - i - 1] = 0;}}// 再组合(就是已知二进制数求10进制数)unsigned int ret = 0;for (i = 0; i < 32; i++){if (bits[i] != 0){ret += (unsigned int)pow(2, i);}}return ret;
}

拓展

求一个数二进制1的个数

        //方法一:1 左移for (int i = 0; i < 32; i++) {if((num&(1<<i)) == (1<<i)){count++;}}//方法二:数字右移for (int i = 0; i < 32; i++){if(((num>>i)&1)==1){count++;}}//方法三:减一&本身减一相当于将最后一个 1 消掉,后面的0变为1,在&相当于去掉 最后一个1while (num!=0){num=(num-1) & num;count++;}

相关文章:

C语言笔试题:实现把一个无符号整型数字的二进制序列反序后输出

目录 题目 实例 方法一&#xff1a;直接交换 方法二&#xff1a;间接交换 拓展 题目 编写一个函数&#xff0c;将一个无符号整数的所有位逆序&#xff08;在32位机器下&#xff09; 实例 例如有一个无符号整数 unsigned int num 32; unsigned int 在32位系统中占4个字…...

elementplus如何实现dialog遮罩层外的元素可以被操作点击

elementplus如何实现dialog遮罩层外的元素可以被操作点击 element plus 组件库中的 dialog 组件可以说是使用频率最高的组件之一&#xff0c;它的效果是弹出一个对话框&#xff0c;外面默认会有一个蒙层。 现在我碰到的需求是&#xff0c;弹窗要正常显示&#xff0c;但是蒙层下…...

Springboot整合Kafka消息队列服务实例

一、Kafka相关概念 1、关于Kafka的描述 Kafka是由Apache开源&#xff0c;具有分布式、分区的、多副本的、多订阅者&#xff0c;基于Zookeeper协调的分布式处理平台&#xff0c;由Scala和Java语言编写。通常用来搜集用户在应用服务中产生的动作日志数据&#xff0c;并高速的处…...

kotlin——MVVM框架下的大型项目优化

目录 概要 优化思路 一、重构过长的Activity 二、优化臃肿的ViewModel 示例代码&#xff1a; 概要 在大型项目中&#xff0c;随着项目越做越大&#xff0c;activity和viewmodel的代码会越来越多&#xff0c;尽量保持Activity和ViewModel的代码精简和易于维护是非常重要的。个人…...

echarts实现折线图点击添加标记

文章目录 背景一、代码示例 背景 业务场景体现在功能层面主要两点&#xff0c; 折线图表设置点击事件点击事件与图标渲染标记绑定 对于节点没有被添加标记的可以&#xff0c;弹框提示添加标记&#xff0c;并提供标记内容输入框&#xff0c;已经添加过标记的点&#xff0c;点…...

循环赛日程表

描述 n 2 ^ k个选手 每个选手必须与其他n-1个选手各赛一次每个选手一天赛一次比赛打n-1天 思路 k 3时的解 我们先进行假设&#xff1a;每个选手第一天和自己比&#xff0c;然后分解成4个子问题&#xff1a; (1)14号的第14天&#xff0c;对手1~4号; (2)14号的第58天&a…...

计算机网络:运输层 - 概述

计算机网络&#xff1a;运输层 - 概述 运输层的任务端口号复用与分用UDP协议首部格式 TCP协议面向字节流 运输层的任务 物理层、数据链路层以及网络层&#xff0c;他们共同解决了将主机通过网络互联起来所面临的问题&#xff0c;实现了主机到主机的通信。 网络层的作用范围是…...

使用阿里开源的Spring Cloud Alibaba AI开发第一个大模型应用

背景 前段时间看到Spring推出了SpringAI&#xff0c;可以方便快速的接入ChatGPT等国外的大模型&#xff0c;现在阿里巴巴也紧追脚步推出了Spring Cloud Alibaba AI&#xff0c;Spring Cloud Alibaba AI 目前基于 Spring AI 0.8.1 版本 API 完成通义系列大模型的接入。通义接入…...

`THREE.PointsMaterial` 是 Three.js 中用于创建粒子系统材质的类。它允许你设置粒子系统的外观属性,比如颜色、大小和透明度。

demo案例 THREE.PointsMaterial 是 Three.js 中用于创建粒子系统材质的类。它允许你设置粒子系统的外观属性&#xff0c;比如颜色、大小和透明度。下面是对其构造函数的参数、属性和方法的详细讲解。 构造函数 const material new THREE.PointsMaterial(parameters);参数&am…...

Android-Android Studio-FAQ

1 需求 2 接口 3 Android Studio xml布局代码补全功能失效问题 最终解决方案就是尝试修改compileSdk 为不同SDK版本来解决问题&#xff0c;将原本34修改为32测试会发现xml代码补全功能有效了&#xff01; 参考资料 Android Studio xml布局代码补全功能失效问题_android studi…...

架构师指南:现代 Datalake 参考架构

这篇文章的缩写版本于 2024 年 3 月 26 日出现在 The New Stack 上。 旨在最大化其数据资产的企业正在采用可扩展、灵活和统一的数据存储和分析方法。这一趋势是由企业架构师推动的&#xff0c;他们的任务是制定符合不断变化的业务需求的基础设施。现代数据湖体系结构通过将数…...

通讯协议大全(UART,RS485,SPI,IIC)

参考自&#xff1a; 常见的通讯协议总结&#xff08;USART、IIC、SPI、485、CAN&#xff09;-CSDN博客 UART那么好用&#xff0c;为什么单片机还需要I2C和SPI&#xff1f;_哔哩哔哩_bilibili 5分钟看懂!串口RS232 RS485最本质的区别&#xff01;_哔哩哔哩_bilibili 喜欢几位…...

基于EXCEL数据表格创建省份专题地图

1 数据源 随着西藏于5月1日发布2022年一季度经济运行情况&#xff0c;31省份一季度GDP数据已全部出炉。 总量方面&#xff0c;粤苏鲁稳居前三&#xff1b;增速方面&#xff0c;23省份高于“全国线”&#xff0c;新疆表现最佳&#xff0c;增速达到7.0%。 表格表现数据不够直观…...

基于java+springboot+vue实现的电商应用系统(文末源码+Lw)241

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本电商应用系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&a…...

好文!12个策略解决 Kafka 数据丢失问题

哥们儿&#xff01;有遇到Kafka数据丢失问题的问题吗&#xff0c;你是如何解决的&#xff1f;今天的文章&#xff0c;V哥来详细解释一下&#xff0c;整理了12种解决策略&#xff0c;希望可以帮助你解决项目中的问题&#xff1a;以下是一些常见的解决方案和最佳实践。 生产者确认…...

Android 第三方框架:网络:OkHttp:源码分析:拦截器

文章目录 涉及到的设计模式 责任链模式:ArrayList策略模式:Interceptor和XXXInterceptor源码分析API总结涉及到的设计模式 责任链模式:ArrayList ArrayList 用ArrayList作为保存顺序的数据结构 把系统提供的各种Interceptor和自定义的Interceptor放入ArrayList中 RealI…...

FlowUs AI的使用教程和使用体验

FlowUs AI 使用教程 FlowUs AI特点使其成为提升个人和团队生产力的有力工具&#xff0c;无论是在学术研究、内容创作、技术开发还是日常办公中都能发挥重要作用。现在来看看如何使用FlowUs AI吧&#xff01; 注册与登录&#xff1a;首先&#xff0c;确保您已经注册并登录FlowU…...

SwiftUI 6.0(iOS 18)ScrollView 全新的滚动位置(ScrollPosition)揭秘

概览 在只有方寸之间大小的手持设备上要想体面的向用户展示海量信息&#xff0c;滚动视图&#xff08;ScrollView&#xff09;无疑是绝佳的“东牀之选”。 在 SwiftUI 历史的长河中&#xff0c;总觉得苹果对于 ScrollView 视图功能的升级是在“挤牙膏”。这不&#xff0c;在本…...

阿贝云免费虚拟主机和免费云服务器评测

阿贝云是一家提供免费虚拟主机和免费云服务器的服务商&#xff0c;为用户提供了一个便捷的搭建网站和应用的平台。他们的服务受到了很多用户的好评。用户可以轻松地在阿贝云上创建自己的网站&#xff0c;并享受免费的虚拟主机和云服务器。通过阿贝云的服务&#xff0c;用户可以…...

不懂就问,开通小程序地理位置接口有那么难吗?

小程序地理位置接口有什么功能&#xff1f; 若提审后被驳回&#xff0c;理由是“当前提审小程序代码包中地理位置相关接口( chooseAddress、getLocation )暂未开通&#xff0c;建议完成接口开通后或移除接口相关内容后再进行后续版本提审”&#xff0c;那么遇到这种情况&#x…...

万物识别-中文镜像步骤详解:从镜像pull到浏览器验证的12个关键节点

万物识别-中文镜像步骤详解&#xff1a;从镜像pull到浏览器验证的12个关键节点 你是不是也遇到过这样的场景&#xff1a;看到一张图片&#xff0c;想知道里面是什么东西&#xff0c;但手动搜索又麻烦又慢&#xff1f;或者&#xff0c;你的项目需要批量识别图片内容&#xff0c…...

生信分析必备:用TBtools打造高颜值热图的5个隐藏技巧

生信分析必备&#xff1a;用TBtools打造高颜值热图的5个隐藏技巧 在生物信息学分析中&#xff0c;热图&#xff08;Heatmap&#xff09;是最常用的数据可视化工具之一。一张精心设计的热图不仅能清晰展示基因表达、代谢物含量或其他生物数据的模式&#xff0c;还能让研究成果在…...

低成本AI助手方案:OpenClaw+Qwen3-32B私有镜像替代GPT-4

低成本AI助手方案&#xff1a;OpenClawQwen3-32B私有镜像替代GPT-4 1. 为什么选择本地化AI助手 去年冬天&#xff0c;当我第37次收到OpenAI API的账单时&#xff0c;手指悬在支付按钮上迟迟按不下去——单月$127的支出已经超出了个人项目的预算红线。作为一个独立开发者&…...

SAP ABAP RFC函数外部调用Debug全攻略:从SE37设置到断点跟踪

SAP ABAP RFC函数外部调用Debug全攻略&#xff1a;从SE37设置到断点跟踪 在跨系统集成的复杂场景中&#xff0c;RFC函数调试往往让开发者头疼不已。想象一下这样的场景&#xff1a;你开发的RFC接口在生产环境突然报错&#xff0c;但本地测试一切正常&#xff1b;或者第三方系统…...

终极内存故障排查方案:Memtest86+完整应用指南

终极内存故障排查方案&#xff1a;Memtest86完整应用指南 【免费下载链接】memtest86plus memtest86plus: 一个独立的内存测试工具&#xff0c;用于x86和x86-64架构的计算机&#xff0c;提供比BIOS内存测试更全面的检查。 项目地址: https://gitcode.com/gh_mirrors/me/memte…...

ROS开发CMakeLists指南

1.常见命令1.1 find_packagefind_package(catkin REQUIRED COMPONENTSroscpprospy std_msgs )查找 catkin 构建系统和其他指定的 ROS 包加载 这些包的配置信息设置 相关变量供后续使用&#xff1a;${catkin_INCLUDE_DIRS} - 包含所有依赖包的头文件路径${catkin_LIBRARIES} - …...

Z-Image-Turbo-rinaiqiao-huiyewunv开发者教程:gc.collect()+empty_cache显存防泄漏实践

Z-Image-Turbo-rinaiqiao-huiyewunv开发者教程&#xff1a;gc.collect()empty_cache显存防泄漏实践 1. 项目概述 Z-Image Turbo (辉夜大小姐-日奈娇)是基于Tongyi-MAI Z-Image底座模型开发的专属二次元人物绘图工具。该工具通过注入辉夜大小姐(日奈娇)微调safetensors权重&am…...

PROJECT MOGFACE技术解析:深入理解LSTM在序列建模中的替代与增强

PROJECT MOGFACE技术解析&#xff1a;深入理解LSTM在序列建模中的替代与增强 1. 引言 如果你在几年前接触过自然语言处理或者语音识别&#xff0c;那么“LSTM”这个词对你来说一定不陌生。它曾经是处理序列数据的黄金标准&#xff0c;从机器翻译到语音合成&#xff0c;几乎无…...

基于Whisper-large-v3的语音搜索引擎开发

基于Whisper-large-v3的语音搜索引擎开发 你有没有遇到过这种情况&#xff1f;手头有几百个小时的会议录音、课程录像或者播客音频&#xff0c;想找其中某个人说过的一句话&#xff0c;或者某个特定的知识点&#xff0c;结果只能从头到尾听一遍&#xff0c;费时又费力。或者&a…...

基于uniapp的SUPOIN PDA激光扫码广播监听功能实现与优化

1. 为什么选择SUPOIN PDA激光扫码方案 在工业级移动应用中&#xff0c;扫码功能可以说是刚需中的刚需。我做过不少仓库管理、物流配送的项目&#xff0c;深刻体会到扫码速度差个0.5秒&#xff0c;工人一天下来就能多处理上百件货物。SUPOIN PDA设备自带的激光扫码模块&#xf…...