人本善良

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

2025年1月18日 #

将字节中的某个位赋值

[Description("将字节中的某个位赋值")]
        public static byte SetbitValue(byte value, int offset, bool bitValue)
        {
            return bitValue ? 
                 (byte)(value | (byte)Math.Pow(2, offset)) :
                 (byte)(value & ~(byte)Math.Pow(2, offset));
        }
        /*
            这段代码是一个C#方法,用于设置一个字节(`byte`)中某一位的值。具体来说,它可以根据传入的参数将字节中的某一位设置为1或0。

            ### 参数说明
            - `value`:原始的字节值。
            - `offset`:要设置的位的偏移量(从0开始,0表示最低位,7表示最高位)。
            - `bitValue`:要设置的值,`true`表示将该位设置为1,`false`表示将该位设置为0。

            ### 方法逻辑
            1. **设置位为1**:
               - 使用按位或操作符 `|` 将目标位设置为1。
               - `Math.Pow(2, offset)` 计算出一个掩码,该掩码只有目标位为1,其他位为0。
               - 将原始字节 `value` 与掩码进行按位或操作,结果是将目标位设置为1,其他位保持不变。

            2. **设置位为0**:
               - 使用按位与操作符 `&` 和按位取反操作符 `~` 将目标位设置为0。
               - `Math.Pow(2, offset)` 计算出一个掩码,该掩码只有目标位为1,其他位为0。
               - 对掩码进行按位取反操作,得到一个只有目标位为0,其他位为1的掩码。
               - 将原始字节 `value` 与取反后的掩码进行按位与操作,结果是将目标位设置为0,其他位保持不变。

            ### 
            假设 `value = 0b10101010`(二进制),`offset = 3`,`bitValue = true`:
            - 计算掩码:`Math.Pow(2, 3) = 8`,即 `0b00001000`。
            - 执行按位或操作:`0b10101010 | 0b00001000 = 0b10101010`(结果不变,因为第3位已经是1)。

            如果 `bitValue = false`:
            - 计算掩码:`Math.Pow(2, 3) = 8`,即 `0b00001000`。
            - 取反掩码:`~0b00001000 = 0b11110111`。
            - 执行按位与操作:`0b10101010 & 0b11110111 = 0b10100010`(第3位被设置为0)。

            ### 
            这个方法通过位操作来高效地设置字节中的某一位,适用于需要精确控制字节中每一位的场景,如硬件控制、协议解析等。
                     */

 

posted @ 2025-01-18 11:49 简简单单2018 阅读(22) 评论(0) 推荐(0) 编辑

与 和位移运算的原理

摘要: (`&`)**和**位移运算(`>>`)**的逻辑,并通过示例展示每一步的计算过程。 ### 1. **与运算(`&`)** - **作用**:提取一个数的低8位(最低有效字节)。 - **原理**:`0xFF` 的二进制形式是 `00000000 11111111`,与一个16位数进行与运算时,会 阅读全文

posted @ 2025-01-18 08:56 简简单单2018 阅读(7) 评论(0) 推荐(0) 编辑

2025年1月17日 #

单双字反转

摘要: 在嵌入式或底层开发中,数据在传输过程中可能需要调整字节顺序,通常以双字(32位)或单字(16位)为单位进行反转。这种操作通常用于适配不同的字节序(大小端)或协议格式。 以下是对 单字反转 和 双字反转 的原理及详细举例: 1. 单字反转(BADC) 原理:单字反转是以 16位(2字节) 为单位,将每 阅读全文

posted @ 2025-01-17 15:36 简简单单2018 阅读(11) 评论(0) 推荐(0) 编辑

2024年12月13日 #

c# visa GPIB

摘要: 以下是一个使用C#和NI-VISA库控制Keysight 34970A数据采集器的示例代码。这个示例将读取通道1的电压值。 ### 前提条件1. 安装NI-VISA库:您可以从NI官方网站下载并安装NI-VISA。2. 确保您的计算机上安装了NI-VISA或Keysight IO Libraries 阅读全文

posted @ 2024-12-13 16:00 简简单单2018 阅读(184) 评论(0) 推荐(0) 编辑

2024年8月15日 #

Nginx 设置获取真实IP

摘要: server { listen 80; server_name your_domain.com; location / { proxy_pass http://your_backend_server; proxy_set_header X-Real-IP $remote_addr; proxy_se 阅读全文

posted @ 2024-08-15 13:32 简简单单2018 阅读(23) 评论(0) 推荐(0) 编辑

2024年5月15日 #

asp.net core 跨域

摘要: missing allow origin header asp.net core 在 ASP.NET Core 中,出现 "missing allow origin header" 错误通常是由于跨域资源共享 (CORS) 未正确配置所致。该错误的原因是客户端(如浏览器)尝试从不同的域或端口请求资源 阅读全文

posted @ 2024-05-15 09:35 简简单单2018 阅读(96) 评论(0) 推荐(0) 编辑

2024年5月5日 #

centos ping不通的情况

摘要: 阅读全文

posted @ 2024-05-05 17:35 简简单单2018 阅读(10) 评论(0) 推荐(0) 编辑

2023年7月31日 #

批量导入书签pdf

摘要: FreePic2Pdf快速为pdf文档添加带有超链接的书签目录 Zhanwei Liu 于 2020-05-06 13:53:40 发布 3137 收藏 14分类专栏: 书签 PDF版权 书签同时被 2 个专栏收录1 篇文章0 订阅订阅专栏 PDF1 篇文章0 订阅订阅专栏FreePic2Pdf快速 阅读全文

posted @ 2023-07-31 15:46 简简单单2018 阅读(189) 评论(0) 推荐(0) 编辑

2023年3月31日 #

使用EFCore的Code First和MySql数据库迁移(转载 )

摘要: 下辈子还当程序员 博客园 首页 新随笔 联系 订阅 管理 随笔 - 4 文章 - 0 评论 - 9 阅读 - 44432 使用EFCore的Code First和MySql数据库迁移 1. 感慨一下 随着.net core的持续更新和升级,至少对于从事.net开发的人员和即将踏入这个领域的人来说,我 阅读全文

posted @ 2023-03-31 17:36 简简单单2018 阅读(120) 评论(0) 推荐(0) 编辑

2023年2月22日 #

Nginx 配置

摘要: 在当今快节奏的数字世界中,企业需要能够处理大量网络流量以保持竞争力。实现这一目标的一种方法是使用像 Nginx 这样的高性能 Web 服务器。将 Nginx 配置为每分钟处理 100000 个请求需要经过良好优化和调整的服务器。在本文中,我们将提供一些指南来帮助您配置 Nginx 以处理如此大量的请 阅读全文

posted @ 2023-02-22 09:26 简简单单2018 阅读(248) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示