C#,二进制数的按位交换(Bits swap)的算法与源代码

数字在指定位置指定位数的交换是常见算法。

1 源程序

using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;

namespace Legalsoft.Truffer.Algorithm
{
    public static partial class Algorithm_Gallery
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="x">数字</param>
        /// <param name="p1">位置1</param>
        /// <param name="p2">位置2</param>
        /// <param name="n">交换字节数目</param>
        /// <returns></returns>
        public static int Bits_Swap(int x, int p1, int p2, int n)
        {
            int set1 = (x >> p1) & ((1 << n) - 1);

            int set2 = (x >> p2) & ((1 << n) - 1);

            int xor = (set1 ^ set2);

            xor = (xor << p1) | (xor << p2);

            int result = x ^ xor;

            return result;
        }

        public static int Bits_Swap_Second(int x, int p1, int p2, int n)
        {
            int xor = (int)(((x >> p1) ^ (x >> p2)) & ((1U << n) - 1));
            return x ^ ((xor << p1) | (xor << p2));
        }


        public static int Bits_Swap_Third(int x, int p1, int p2, int n)
        {
            int shift1, shift2, value1, value2;
            while ((n--) > 0)
            {
                shift1 = 1 << p1;
                shift2 = 1 << p2;
                value1 = ((x & shift1));
                value2 = ((x & shift2));

                if ((value1 == 0 && value2 != 0) || (value2 == 0 && value1 != 0))
                {
                    if (value1 != 0)
                    {
                        x = x & (~shift1);
                        x = x | shift2;
                    }
                    else
                    {
                        x = x & (~shift2);
                        x = x | shift1;
                    }
                }
                p1++;
                p2++;
            }

            return x;
        }
    }
}

POWER BY TRUFFER.CN
BY 315SOFT.COM

 

2 代码格式

using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;namespace Legalsoft.Truffer.Algorithm
{public static partial class Algorithm_Gallery{/// <summary>/// /// </summary>/// <param name="x">数字</param>/// <param name="p1">位置1</param>/// <param name="p2">位置2</param>/// <param name="n">交换字节数目</param>/// <returns></returns>public static int Bits_Swap(int x, int p1, int p2, int n){int set1 = (x >> p1) & ((1 << n) - 1);int set2 = (x >> p2) & ((1 << n) - 1);int xor = (set1 ^ set2);xor = (xor << p1) | (xor << p2);int result = x ^ xor;return result;}public static int Bits_Swap_Second(int x, int p1, int p2, int n){int xor = (int)(((x >> p1) ^ (x >> p2)) & ((1U << n) - 1));return x ^ ((xor << p1) | (xor << p2));}public static int Bits_Swap_Third(int x, int p1, int p2, int n){int shift1, shift2, value1, value2;while ((n--) > 0){shift1 = 1 << p1;shift2 = 1 << p2;value1 = ((x & shift1));value2 = ((x & shift2));if ((value1 == 0 && value2 != 0) || (value2 == 0 && value1 != 0)){if (value1 != 0){x = x & (~shift1);x = x | shift2;}else{x = x & (~shift2);x = x | shift1;}}p1++;p2++;}return x;}}
}

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

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

相关文章

使用vite创建项目

NPM npm create vitelatest Yarn yarn create vite PNPM pnpm create vite Bun bunx create-vite 安装sass npm add -D sass 安装less npm add -D less vite官方中文文档&#xff1a;Vite | 下一代的前端工具链 (vitejs.dev)

Fabric V2.5 test-network启动日志分析

背景 分析Fabric网络的启动日志可以帮我们理解搭建区块链网络的过程。本文对输出日志进行详细的分析。 启动网络与创建通道 # verbose 可以输出更详细的日志。 ./network.sh up createChannel -verbose# 使用本机安装的docker and docker-compose Using docker and docker-c…

用实例详解Java中的类、对象、继承及多态性,一文理解Java类和对象、多态性的概念

Java中的类、对象、继承及多态性详解 Java作为一门面向对象的编程语言&#xff0c;其核心概念包括类、对象、继承以及多态性。这些概念是Java编程的基础&#xff0c;理解和掌握它们对于编写高效、可维护的Java代码至关重要。本文将结合实例详细讲解这些概念&#xff0c;并解释…

专业140+总分420+南京信息工程大学811信号与系统考研经验南信大电子信息与通信工程,真题,大纲,参考书

今年顺利被南信大电子信息录取&#xff0c;初试420&#xff0c;专业811信号与系统140&#xff08;Jenny老师辅导班上140很多&#xff0c;真是大佬云集&#xff09;&#xff0c;今年应该是南信大电子信息最卷的一年&#xff0c;复试线比往年提高了很多&#xff0c;录取平均分380…

扭蛋机小程序开发:发展优势

商场中精美的扭蛋机一直都是年轻人的心头好&#xff0c;目前&#xff0c;扭蛋机商品也不在局限于各种小型玩具&#xff0c;也逐渐与各类热门IP合作&#xff0c;打造出了各类手办、周边等&#xff0c;深受各个年龄层的喜爱。 如今&#xff0c;扭蛋机在互联网的推动下&#xff0…

算法的基本概念

设么是算法&#xff1f; 什么是好的算法/ 什么是算法&#xff1a; 量水的问题&#xff1a; 方案如下&#xff1a;&#xff08;核心思路就是两个桶差值为2&#xff0c;两次差值为4&#xff0c;7-(5-4) 6&#xff09; 算法&#xff1a;准确描述的 “操作步骤 (问题求解步骤)”&…

数据结构中图的概念以及遍历算法的实现

在数据结构中&#xff0c;图&#xff08;Graph&#xff09;是由节点&#xff08;Vertex&#xff09;和连接节点的边&#xff08;Edge&#xff09;组成的一种非线性数据结构。图可以用来表示各种实际问题中的关系和连接&#xff0c;如社交网络、道路网络、电路等。 图由两个主要…

MFC写入文件中文乱码解决办法

&#x1f482; 个人主页:pp不会算法^ v ^ &#x1f91f; 版权: 本文由【pp不会算法v】原创、在CSDN首发、需要转载请联系博主 &#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 产生原因: visual studio的默认编码是Unicode&#xff0c;但是tx…

2023年全球架构师峰会(ArchSummit北京站2023):核心内容与学习收获(附大会核心PPT下载)

本次峰会是一场集结了全球顶级技术专家和行业领袖的盛会。作为一年一度的重要技术交流活动&#xff0c;本次峰会聚焦当前及未来软件架构的发展趋势、技术挑战与创新实践&#xff0c;旨在为参会者提供一个深度交流、学习与合作的平台。在为期两天的会议中&#xff0c;与会者不仅…

SQL Developer 小贴士:Unshared Worksheet

在Oracle SQL Developer中&#xff0c;最常用的功能应该是SQL Worksheet&#xff0c;或Worksheet。 可以创建两类Worksheet&#xff0c;即Worksheet和Unshared Worksheets。前者是共享数据库连接的&#xff0c;后者会单独创建自己的连接。前者的快捷键是AltF10&#xff1b;后者…

ACK One:构建混合云同城容灾系统

作者&#xff1a;蔡靖 对于当前业务运行在 IDC 内的 Kubernetes 集群中&#xff0c;希望通过云计算为云下业务提供同城灾备的高可用冗余能力&#xff0c;可利用阿里云分布式云容器平台 ACK One [ 1] 来提供统一得流量、应用和集群管理&#xff0c;实现业务流量的多集群路由和灾…

学习Android的第十六天

目录 Android 自定义 Adapter Adapter 接口 SpinnerAdapter ListAdapter BaseAdapter 自定义 BaseAdapter 参考文档 Android ListView 列表控件 ListView 的属性和方法 表头表尾分割线的设置 列表从底部开始显示 android:stackFromBottom 设置点击颜色 cacheColorH…

【Linux】28、命令行参数 语法格式

文章目录 一、没有括号二、[]三、{}四、<>五、...六、|七、() 命令行参数很复杂&#xff0c;通过 --help 会看到很多符号&#xff0c;比如 [] {} () <> | …&#xff0c;他们都是什么意思呢&#xff1f;一般格式如下&#xff1a; 命令<必选参数1|必选参数2>…

【自然语言处理】:实验4布置,预训练语言模型实现与应用

清华大学驭风计划 因为篇幅原因实验答案分开上传&#xff0c;自然语言处理专栏持续更新中&#xff0c;期待的小伙伴敬请关注 有任何疑问或者问题&#xff0c;也欢迎私信博主&#xff0c;大家可以相互讨论交流哟~~ 案例简介 2018年&#xff0c;Google提出了预训练语言模型BE…

jbpm4使用的一些问题 ,供挣扎于老项目的码农们参考

这里写自定义目录标题 springboot jbpm4.4mysql 双数据源问题疑问 springboot jbpm4.4mysql 双数据源问题 疑问 basic&#xff1a; 项目同时支持hibernatemybatis 可行 1.jbpm4是否只支持hibernate&#xff1f; 2使用时如何指定jbpm使用的数据源

基于PSO优化的GRU多输入时序回归预测(Matlab)粒子群优化门控循环单元神经网络时序回归预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分程序&#xff1a; 四、完整代码数据分享下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台…

扩展语音识别系统:增强功能与多语言支持

一、引言 在之前的博客中&#xff0c;我们成功构建了一个基于LibriSpeech数据集的英文语音识别系统。现在&#xff0c;我们将对系统进行扩展&#xff0c;增加一些增强功能&#xff0c;并尝试支持多语言识别。 二、增加增强功能 语音合成 --除了语音识别&#xff0c;我们还可以…

使用 ChatGPT系统学习一门知识的技巧

如何使用 ChatGPT 高效学习一门知识&#xff1f;我探索到一种比较高效的方式&#xff1a;首先让 ChatGPT 给你一个学习提纲&#xff0c;然后以此把提纲内容逐个发给 ChatGPT&#xff0c;进行详情学习。 下面以“学习八木天线”工作原理为例说明。 以八木天线为切入点&#xff0…

Hexo删除主题

一、找到存放主题的目录 1、一般在入博客中的theme目录&#xff0c;这里以next主题为例。 在theme目录中&#xff0c;打开Git Bash Here&#xff1b; ls 列出主题目录 rm -rf 填需要删除的主题目录 2、另一种情况&#xff0c;以fluid主题为例&#xff1b;之前不知道是用那种…

文物保护系统守护历史岁月,成都青铜展科技闪耀

一、“吉金万里-中国西南青铜文明展”隆重开幕 1月27日&#xff0c;“吉金万里-中国西南青铜文明展”在成都金沙遗址博物馆向公众开放&#xff0c;奉上一场精彩的青铜文明“盛宴”。本次展览汇集了中国西南地区32家文博单位&#xff0c;以青铜器为代表的294件经典文物&#xf…