摘要:例如,十進(jìn)制數(shù),用二進(jìn)制表示則為。按位操作符操作數(shù)字的二進(jìn)制形式,但是返回值依然是標(biāo)準(zhǔn)的數(shù)值。不同為真相同為假二進(jìn)制按位異或運(yùn)算從左到右按位非為真,為假對(duì)每一項(xiàng)進(jìn)行非操作,遇真則假,遇假則真。
二進(jìn)制與十六進(jìn)制
二進(jìn)制用 0 1 表示 2= 10
十六進(jìn)制 前綴0x 用0123456789ABCDEF表示 2= 0x2
二進(jìn)制與十六進(jìn)制的轉(zhuǎn)換
十六進(jìn)制的每位 等于二進(jìn)制的四位
十六進(jìn)制 0xF = 15(十進(jìn)制) = 1111(二進(jìn)制) 十六進(jìn)制每位最大就是二進(jìn)制的 1111 = 15(十進(jìn)制) 二進(jìn)制 2 = 10 十六進(jìn)制 2 = 0x2 = 0010 規(guī)律很清晰了吧 20 = 10100(6位 口算得出要補(bǔ)齊8位) 0001 0100 0001 = 1 0100 = 4 20 = 0001 0100 = 0x14二進(jìn)制字節(jié)
一個(gè)字節(jié)是8個(gè)二進(jìn)制位
0000 0000 - 1111 1111 = 0-255 代表一個(gè)字節(jié)可以表示256個(gè)字符
UTF-16大部分使用兩個(gè)字節(jié)編碼,編碼超出 65535 的使用四個(gè)字節(jié)
0x0000 - 0xFFFF 兩個(gè)字節(jié)
0x010000 - 0x10FFFF 四個(gè)字節(jié)
0x0000 - 0x007F 一個(gè)字節(jié)
0x0080 - 0x07FF 兩個(gè)字節(jié)
0x0800 - 0xD7FF 、0xE000 - 0xFFFF 三個(gè)字節(jié)
0x010000 - 0x10FFFF 四個(gè)字節(jié)
注: Unicode在范圍 D800-DFFF 中不存在任何字符
所有的按位操作符的操作數(shù)都會(huì)被轉(zhuǎn)成補(bǔ)碼(two"s complement)形式的有符號(hào)32位整數(shù)。
反碼、補(bǔ)碼 負(fù)數(shù)js中的二進(jìn)制轉(zhuǎn)換是不會(huì)轉(zhuǎn)換符號(hào)的
1的反碼 補(bǔ)碼 以及 -1 1 = 0000 0000 0000 0000 0000 0000 0000 0001 反碼 1 =0、0 =1 下面會(huì)講述按位操作符 按位非 ~ 其實(shí)就是反碼 1111 1111 1111 1111 1111 1111 1111 1110 補(bǔ)碼后 末位+1 1111 1111 1111 1111 1111 1111 1111 1111 = -1按位操作符
按位操作符(Bitwise operators) 將其操作數(shù)(operands)當(dāng)作32位的比特序列(由0和1組成),而不是十進(jìn)制、十六進(jìn)制或八進(jìn)制數(shù)值。例如,十進(jìn)制數(shù)9,用二進(jìn)制表示則為1001。按位操作符操作數(shù)字的二進(jìn)制形式,但是返回值依然是標(biāo)準(zhǔn)的JavaScript數(shù)值。
&、| 在轉(zhuǎn)碼中比較常用
1為真,0為假 全真則真 遇假為假
js 內(nèi)置方法 var a = 1; a.toString(2); 十轉(zhuǎn)二 2 = 10 3 = 11 二進(jìn)制進(jìn)行按位與運(yùn)算 從左到右 1 && 1 = 1 0 && 1 = 0 2 & 3 = 10 = 2按位或 |
1為真,0為假 遇真則真 全假為假
8 = 1000 9 = 1001 二進(jìn)制按位或運(yùn)算 從左到右 1 || 1 = 1 0 || 0 = 0 0 || 0 = 0 0 || 1 = 1 8 | 9 = 1001 = 9按位異或 ^
1為真,0為假。不同為真 相同為假
4 = 100 5 = 101 二進(jìn)制按位異或運(yùn)算 從左到右 1 1 = 0 0 0 = 0 0 1 = 1 4 ^ 5 = 001 = 1按位非 ~
1為真,0為假 對(duì)每一項(xiàng)進(jìn)行非操作,遇真則假,遇假則真。(速算, ~x =-1*x-1)
6 = 00000000 00000000 00000000 00000110 11111111 11111111 11111111 11111001 = -7按位移動(dòng)操作符
有兩個(gè)操作數(shù) 左側(cè)為要被移動(dòng)的數(shù)字(十進(jìn)制,但是操作是內(nèi)部對(duì)二進(jìn)制操作)
右側(cè)為移動(dòng)的長(zhǎng)度方向根據(jù)操作符移動(dòng),返回根據(jù)被操作數(shù)相同類型的結(jié)果,必須小于32位
a << b 右側(cè)末位開(kāi)始補(bǔ) b個(gè)0 左側(cè)舍去b個(gè)位
11 = 00000000 00000000 00000000 00001011 11 << 2 右側(cè)末位開(kāi)始補(bǔ) b個(gè)0 00000000 00000000 00000000 00001011 00 左側(cè)舍去b個(gè)位 000000 00000000 00000000 00001011 00 格式化 00000000 00000000 00000000 00101100 = 44 -44 = (反碼)11111111 11111111 11111111 11010011 (補(bǔ)碼)11111111 11111111 11111111 11010100 -11 = (反碼)11111111 11111111 11111111 11110100 (補(bǔ)碼)11111111 11111111 11111111 11110101 -11 << 2 右側(cè)末位開(kāi)始補(bǔ) b個(gè)0 11111111 11111111 11111111 11110101 00 左側(cè)舍去b個(gè)位 111111 11111111 11111111 11110101 00 格式化 11111111 11111111 11111111 11010100 = -44帶符號(hào)右移操作符( 記住左側(cè)首位 0 代表正 ,1 代表負(fù)) >>
a >> b 左側(cè)首位開(kāi)始補(bǔ) b 個(gè) 首位值 右側(cè)側(cè)舍去b個(gè)位
12 = 00000000 00000000 00000000 00001100 12 >> 2 補(bǔ) b 個(gè) 首位值 00 00000000 00000000 00000000 00001100 右側(cè)舍去b個(gè)位 00 00000000 00000000 00000000 000011 格式化 00000000 00000000 00000000 00000011 = 3 -3 = (反碼)11111111 11111111 11111111 11111100 (補(bǔ)碼)11111111 11111111 11111111 11111101 -12 >> 2 -12 = (反碼)11111111 11111111 11111111 11110011 (補(bǔ)碼)11111111 11111111 11111111 11110100 -12 >> 2 補(bǔ) b 個(gè) 首位值 11 11111111 11111111 11111111 11110100 右側(cè)舍去b個(gè)位 11 11111111 11111111 11111111 111101 格式化 11111111 11111111 11111111 11111101 = -3
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/109337.html
摘要:前言今天來(lái)學(xué)習(xí)轉(zhuǎn),轉(zhuǎn)以達(dá)成之間的互轉(zhuǎn)。基本利用按位操作符符號(hào)運(yùn)算符就可以完成。今天這里只做轉(zhuǎn),轉(zhuǎn),后續(xù)轉(zhuǎn)換可以看前面的文章。基礎(chǔ)準(zhǔn)備工作轉(zhuǎn)轉(zhuǎn)轉(zhuǎn)為了更好的理解,我們來(lái)使用轉(zhuǎn)那一期的結(jié)果來(lái)進(jìn)行轉(zhuǎn),轉(zhuǎn) 前言 今天來(lái)學(xué)習(xí)UTF8轉(zhuǎn)Unicode,UTF16轉(zhuǎn)Unicode以達(dá)成UTF8,UTF16之間的互轉(zhuǎn)。提煉成函數(shù)的公式我并沒(méi)有放出來(lái),我的目的只是為了更加理解 字符編碼之間的關(guān)系。如果你需...
摘要:數(shù)據(jù)作為消息通過(guò)傳輸,每個(gè)消息由一個(gè)或多個(gè)幀組成,其中包含正在發(fā)送的數(shù)據(jù)有效負(fù)載。幀數(shù)據(jù)如上所述,數(shù)據(jù)可以被分割成多個(gè)幀。但是,規(guī)范希望能夠處理交錯(cuò)的控制幀。 文章底部分享給大家一套 react + socket 實(shí)戰(zhàn)教程 這是專門探索 JavaScript 及其所構(gòu)建的組件的系列文章的第5篇。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來(lái)篇優(yōu)質(zhì)文章等著你! 如果你錯(cuò)過(guò)了前面的章...
摘要:是一個(gè)請(qǐng)求對(duì)象,包含了客戶端發(fā)來(lái)的握手請(qǐng)求信息事件函數(shù)中可以調(diào)用向客戶端發(fā)送數(shù)據(jù)或者調(diào)用關(guān)閉連接事件回調(diào)是可選的當(dāng)服務(wù)器收到來(lái)自客戶端的數(shù)據(jù)幀時(shí)會(huì)回調(diào)此函數(shù)。 前言:了解概念之后就應(yīng)該練練手啦,不然就是巨嬰 有收獲的話請(qǐng)加顆小星星,沒(méi)有收獲的話可以 反對(duì) 沒(méi)有幫助 舉報(bào)三連 代碼倉(cāng)庫(kù) 實(shí)戰(zhàn)swoole【聊天室】 在線體驗(yàn) 準(zhǔn)備工作 需要先看初識(shí)swoole【上】,了解基本的服務(wù)端...
摘要:注意值得注意的是,一旦接收到所有幀并且原始消息有效載荷已被重建,客戶端將僅被通知關(guān)于新消息。實(shí)驗(yàn)表明,在之后創(chuàng)建了第二個(gè)幀。以下值目前正在使用中代表繼續(xù)幀。 這一次,我們將深入到通信協(xié)議的世界中,對(duì)比并討論它們的屬性并構(gòu)建部件。我們將提供WebSockets和HTTP / 2的快速比較。 最后,我們分享一些關(guān)于如何選擇網(wǎng)絡(luò)協(xié)議。 概述 如今,擁有豐富動(dòng)態(tài)用戶界面的復(fù)雜網(wǎng)絡(luò)應(yīng)用程序被視為...
摘要:狀態(tài)碼當(dāng)關(guān)閉一個(gè)連接時(shí)如在開(kāi)始握手已經(jīng)完成后,發(fā)送一個(gè)關(guān)閉幀,終端可能會(huì)說(shuō)明關(guān)閉的原因。表示終端由于協(xié)議錯(cuò)誤中止了連接。這個(gè)狀態(tài)碼是為了給上層應(yīng)用表示連接被異常關(guān)閉如沒(méi)有發(fā)送或者接受一個(gè)關(guān)閉幀這種場(chǎng)景的使用而設(shè)計(jì)的。 概述 本文為 WebSocket 協(xié)議的第七章,本文翻譯的主要內(nèi)容為 WebSocket 連接關(guān)閉相關(guān)內(nèi)容。 關(guān)閉連接(協(xié)議正文) 7.1 定義 7.1.1 關(guān)閉 Web...
閱讀 4391·2021-11-19 09:59
閱讀 3318·2021-10-12 10:12
閱讀 2630·2021-09-22 15:25
閱讀 3320·2019-08-30 15:55
閱讀 1182·2019-08-29 11:27
閱讀 1463·2019-08-28 18:06
閱讀 2736·2019-08-26 13:41
閱讀 2554·2019-08-26 13:41