当前位置:首页 > 代码相关 > 正文内容

C# 中左移运算

admin6年前 (2020-03-22)代码相关3881

将一个数换算成二进制,整体向左移动指定的位数。

如:7的二进制在Int32中二进制表达为:

00000000 00000000 00000000 00000111

将其左移一位则变为:

00000000 00000000 00000000 00001110

若移位后超出最大位数,则超出部分舍掉,如:

Int32中最大值的二进制数为:

01111111 11111111 11111111 11111111

左移三位,变为:

11111111 11111111 11111111 11111000


下面的代码展示了这个过程

namespace _20200322
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = int.MaxValue;
            int b = a << 3;

            string sta = Convert.ToString(a, 2).PadLeft(32, '0');
            string stb = Convert.ToString(b, 2).PadLeft(32, '0');

            Console.WriteLine("a = " + a);
            Console.WriteLine("b = " + b);

            Console.WriteLine("左移前a:" + sta);
            Console.WriteLine("左移后a:" + stb);

            Console.ReadKey();
        }
    }
}

结果:

image.png

扫描二维码推送至手机访问。

版权声明:本文由lovedm.club发布,如需转载请注明出处。

本文链接:https://lovedm.club/?id=19

标签: C#
分享给朋友:

“C# 中左移运算” 的相关文章

C# 属性,get,set使用

属性反映了状态,是对字段的自然扩展。下面的代码,有一个学生类,类中有年龄属性,通过get,set对年龄进行值的获取与设置,同时对年龄进行约束,使值控制在0-120之间,否则抛出异常信息。namespace _20200324_2 {     cl...

C# 控制某句代码只执行一次

这两天用C#写了个2048游戏练手,在需求上如果最终达到了2048,那么应该给出一句提示或者弹出一个消息框,提示达到了2048,而且这个提示只需要展示一次,关闭提示后应该继续游戏而不会重复提示,可以使用bool类型的全局变量进行控制。如下:public partial class...

C# 使用FileStream进行文件复制操作

使用文件流进行操作,如下,其中注释部分是和非注释部分一样的,但是使用using语句是执行完后自动释放内存,而注释部分是手动释放。CopyFile方法中,缓冲区大小设为1024*1024字节,也就是1MB,Read方法和Write方法中,第一个参数都是缓冲区数组,第二个参数都是偏移量,这个量是在缓冲区...

C# 多线程(1)

一、首先看几个词的含义:进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。线程:线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的...

C# 返回值是接口的方法

今天写PIE二次开发加载栅格数据的时候发现类中方法的返回值是接口,之前没怎么写过,在此记录一下。在例子中设计一个接口 ICalculate ,接口中有两个方法, Add() 和 Div() 分别为加法和减法的功能,均有两个参数,参数和返回值的类型都是int类型。设计一个名为Calculat...

C、C++、C#交换变量

C、C++、C#交换变量

最近重新看了看C和C++,觉得有些地方挺有意思。作为一开始不管什么资料都会用来做例子的一个程序,交换变量。不管在哪,常用的int,float,double类型的变量都是值类型的,作为参数传到函数(方法)中时,其实是复制了一个值进去,也就是说通过函数是无法直接更改这些值的,只能通过一些间接的方法来更改...