首页 > 编程语言 >C# 使用 位运算 按字节提取整数

C# 使用 位运算 按字节提取整数

时间:2023-01-03 12:22:47浏览次数:40  
标签:十六进制 字节 C# NumberHex Number 运算符 按位 运算

C# 使用 位运算 按字节提取整数

【案例说明】
本案例主要介绍按位运算符和移位运算符的用法。案例从控制台输入一个十进制整数,然后将其转换成十六进制数并从控制台输出,接着提取该整数的每一字节所表示的十六进制数值,最后从控制台逐一输出。
【实现过程】
(1)创建一个名为 Logic 的控制台应用程序。
(2)从控制台输入一个十进制整数,在 main 函数中添加代码如下:
Console.WriteLine(「请输入一个整数:」);
int Number = int.Parse(Console.ReadLine()); //从控制台输入一个十进制整数
Console.WriteLine(「{0}的十六进制形式为 0x{1:X8}」, Number, Number);
(3)按字节提取整数每一字节的值,代码如下:
int NumberHex = Number & 0x000000FF; //将数值与 0xFF 按位与运算
Console.WriteLine(「第 1 个字节为:0x{0:X2}」, NumberHex); //十六进制输出第 1 字节
NumberHex = Number >> 8 & 0x000000FF; //将数值右移 8 位与 0xFF 按位与运算
Console.WriteLine(「第 2 个字节为:0x{0:X2}」, NumberHex); //十六进制输出第 2 字节
NumberHex = Number >> 16 & 0x000000FF; //将数值右移 16 位与 0xFF 按位与运算
Console.WriteLine(「第 3 个字节为:0x{0:X2}」, NumberHex); //十六进制输出第 3 字节
NumberHex = Number >> 24 & 0x000000FF; //将数值右移 24 位与 0xFF 按位与运算
Console.WriteLine(「第 4 个字节为:0x{0:X2}」, NumberHex); //十六进制输出第 4 字节
【代码解析】
案例代码中首先从控制台输入一个十进制整数 Number,然后将其按十六进制的形式输出,接着提取 Number 的 4 字节。案例代码中用到了按位与运算符「&」和右移位运算符「>>」。当一个整型数值与十六进制数 0xFF 进行按位与运算时,剩下的就是第一字节,其中 0xFF 表示的是十六进制数 FF,「0x」是十六进制数的前缀。因为每字节有 8 个二进制位,提取第二字节时利用右移位运算符「>>」将 Number 右移 8 位,高位用 0 或 1 填充,低位自动丢失,此时第二字节移到了第一字节的位置,再将其与 0xFF 进制进行按位与运算,这样就提取了第二字节,同理,可提取第三和第四字节。
常用的按位运算符按位与运算符「&」、按位或运算符「|」和按位异或运算符「^」。
注意:这三个运算符对于整数类型来说,是按位运算符;对于布尔类型来说,就是逻辑运算符。
常用的移位运算符有左移位运算符「<<」和右移位运算符「>>」。
注意:当进行左移位时,高位自动丢失,低位用零填充;进行右移位时,低位自动丢失,正数高位用 0 填充,负数高位用 1 填充。

标签:十六进制,字节,C#,NumberHex,Number,运算符,按位,运算
From: https://www.cnblogs.com/netlog/p/17021698.html

相关文章

  • 什么是cherry-pick
    文章目录   前言   图示前言这里的cherry-pick指的是git的命令,cherry-pick这个命令的作用就是把指定的commit,拉到一个新的分支上。图示比如此时分支情况如下:请添加......
  • Educational Codeforces Round 139 vp记
    被Jerry__Jiang神爆杀的一天EducationalCodeforcesRound139vp记ProblemA简单题,随便枚举下即可Code#include<bits/stdc++.h>#defineintlonglong#define......
  • 【Leetcode】天堂硅谷·数字经济算法编程大赛(虚拟)
    感受题目清单​​​https://leetcode.cn/contest/hhrc2022/​​周末比较忙,两场比赛都没有参加,打的虚拟赛。题解A.化学反应实验室内有一些化学反应物,其中的任意两种反应物......
  • HTML学习之基础元素,CSS,图像,链接
    什么是HTML?HTML是用来描述网页的一种语言。HTML指的是超文本标记语言:HyperTextMarkupLanguageHTML不是一种编程语言,而是一种标记语言标记语言是一套标记标签(ma......
  • 解决Django新建app报错File "manage.py", line 14 ) from exc SyntaxError: invalid s
    报错解决因为当时使用python3安装的所以是版本问题,直接python3调用即可......
  • pycharm每次打开项目都需要配置解释器和安装库问题
    前言最近在使用pycharm开发新项目的时候,每次打开新的工程都显示没有解释器,要不加了解释器就是代码一堆没有红色错误提示没有模块问题,找到了解决办法做一个记录.问题打开......
  • 【React框架基础知识】React框架的简介与基本使用方法
    一、简介React:由Facebook开发的用于构建用户界面的JavaScript库(开源)。1.1为什么要学前端框架?原生Javascript有很多痛点:原生JavaScript操作DOM繁琐、效率低(DOM-API操作UI......
  • CSS中常见单位的理解和辨识
    前言最近在学习前端,很多代码中引用了"奇奇怪怪"的单位,也是一个个百度才得知其含义.本篇参照了很多大佬的博客记录一个笔记方便以后查阅.背景介绍传统的项目开发中,我们只会......
  • ElasticSearch之Head插件的安装及使用
    3.Head插件上一节说到ES支持​​Restful​​请求,但是那样的话对于我们开发者来说过于麻烦,并且不够直观,我们一般都会使用一个图形化界面来辅助,比如我们用mysql的时候,会用nav......
  • ElasticSearch之简介及快速入门
    1.ElasticSearch简介1.1什么是ElasticSearch?实时的分布式搜索和分析引擎。基于​​Lucene​​的搜索服务器。提供了一个分布式多用户能力的全文搜索引擎基于​​RESTfulw......