91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c#位運算的基本概念與計算過程

發布時間:2021-08-25 17:10:19 來源:億速云 閱讀:202 作者:chen 欄目:大數據

本篇內容主要講解“c#位運算的基本概念與計算過程”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“c#位運算的基本概念與計算過程”吧!

前言

一些非常基礎的東西,在實際工作中沒有用到、很少用到。一旦遇到,又不知所云。最近遇到一個問題,把一個int16(short) 、兩個bool變量整合成一個int32(int),當聽到這個要求時,我第一反應是不是需求弄錯了,后來才發現是自己才疏學淺,這里就需要位運算相關的概念。
這里補充一下這幾個基本概念
位、字節、字符(英文字母)、漢字、KB、MB、GB、TB的關系
1.位:bit,也叫比特位,是計算機表示數據最小的單位,用二進制0和1來存儲
2.字節:byte,1byte(1B)=8b,一個字節=8位
3.字符:char,1char=2byte=16b,1個字符=2個字節=16位
4.KB,1KB=1024byte(1024B)
5.MB,1MB=1014KB
6.GB,1GB=1024MB
7TB,1TB=1024GB
一個漢字占兩個字節,也就是16位,一篇1000字的文章,大概就是16*1000 個二進制的0或1 。
一個10M的短視頻,也就是10M=1024KB*10=1024字節*10*10=1024位*8*10*10
大概就是919200個二進制的0和1了
short 是16位,int是32位,long是64位

1.什么是位運算

在掌握位運算之前,應該清楚什么是位運算?什么樣的數據類型可以進行位運算?云運算的結果是什么?
1.位運算的對象是int 、char 類型,簡而言之就是對二進制的1101(13)進行運算
2.位運算的結果是整型

符號意義運算對象類型運算結果類型示例
~邏輯非運算整型、char整型~a
&邏輯與運算a&b
|邏輯或運算a|b
<<位左移運算a<<2
>>位右移運算a>>2

2.位邏輯與運算

&與運算是將兩個運算對象按位于進行與運算。
規則是:
1&1=1
0&1=0
0&0=0
如圖:
c#位運算的基本概念與計算過程
15的二進制是0000 1111
20的二進制是0001 0100
15&20的結果就是0000 0100 即結果是4

3.位邏輯或運算

c#位運算的基本概念與計算過程
|位邏輯或運算是將兩個運算對象按位進行或運算,運算的規則是
1|1=1
1|0=1
0|0=0
如15|20的結果計算結果就是31 即二進制0001 1111
0000 1111(15的二進制) | 0001 0100(20的二進制)= 0001 1111結果是31

4.位邏輯異或運算

c#位運算的基本概念與計算過程
^ 位邏輯異或運算 是將兩個運算對象按位進行異或運算,規則是:
1異或1等于0
1異或0等于1
0異或0等于0
即:相同得0,相異得1。
0000 1111 ^ 0001 0100= 0001 1011結果是27

5.位邏輯左移運算

c#位運算的基本概念與計算過程
位邏輯左移運算是將按位向左邊移動若干位,左移后空出的部分為0
比如15的二進制0000 1111 左移8位就是1111 0000 0000(15<<8)結果是3840
左移3位(15<<3)就是0111 1000結果是120
左移就是相當于乘,左移1位就是相當于乘以2的1次方,左移3位就是相當于乘以2的3次方,左移8位就是相當于乘以2的8次方
a<<1 =a乘以2的1次方
a<<2 =a乘以2的2次方
a<<3 =a乘以2的3次方

6.位邏輯右移運算

c#位運算的基本概念與計算過程
位邏輯右移運算是將按位向右邊移動若干位,右移后空出的部分為0
比如0000 1111(15)左移3位(15<<3)就是0000 0001(1)
右移相當于整除,右移1位相當于除以2的1次方,右移2相當于除以2的2次方。
a>>1 = a整除2的1次方
a>>2 = a整除2的2次方
a>>3 = a整除2的3次方

7.位運算的作用

如將一個月的簽到記錄保存到1個int類型中、權限設置、將4個short合并成一個long類型,16個bool類型合并成1個short。
如這個問題所示
需求:C# 用兩個short,一個int32拼成一個long型
要求:現在有兩個short和一個int,需要拼成一個long型,高16位用short,中間32位用int,最低16位用另外一個short
https://bbs.csdn.net/topics/392202825?page=1
做法就是:
((long)shortA << 48 )+ ((long)intA << 16)+ shortB=longResult
講解:
高16位的shortA先左移48,那么longResult 64位的最左邊16位(高16位)就是shortA
中間32位intA 就是先將intA左移16位,那么這個longResult的中間32位就是intA
低16位就是最后剩下的16位用shortB。
那么疑問來了可以通過longResult返推出shortA,shortB,intA。當然是不能這是直接相加。
返回不應該用這種組合字符串的方式
((long)shortA << 48 ) 16位二進制0或1的字符串
((long)intA << 16) 32位二進制0或1的字符串
shortB 16位二進制0或1的字符串
將這三個字符串拼接成64位二進制字符串,再將這個64位二進制字符串轉成一個long。

到此,相信大家對“c#位運算的基本概念與計算過程”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

上林县| 肃北| 石首市| 武城县| 尤溪县| 靖西县| 沅江市| 定安县| 白沙| 封丘县| 库车县| 鹿邑县| 磴口县| 鹤庆县| 视频| 黑水县| 苏尼特右旗| 汉中市| 扎鲁特旗| 榕江县| 布拖县| 铁力市| 湖口县| 昭平县| 新野县| 梅州市| 南溪县| 石棉县| 万载县| 团风县| 佳木斯市| 锡林浩特市| 将乐县| 延川县| 庆阳市| 吉隆县| 保康县| 辽宁省| 阿克陶县| 洪江市| 清苑县|