java位運算和位元組編碼(二)

2021-09-19 15:58:25 字數 526 閱讀 5292

我們來看下jdk中integer類中的靜態方法numberofleadingzeros

public static int numberofleadingzeros(int i) 

if (i >>> 24 == 0)

if (i >>> 28 == 0)

if (i >>> 30 == 0)

n -= i >>> 31;

return n;

}

乍一看,啥跟啥。完全看不懂。不過等你看懂了就會發現位運算的巧妙之處。這個函式的作用呢其實就是計算整形變數i高位連續為零的個數。比如 i = 1 時 二進位制補碼就是原碼也就是 00000000 00000000 00000000 00000001,那麼得到的結果應該是31。這個函式本身有什麼用呢,自己去猜吧。好吧,不賣光子了,比如你想知道乙個int整形的比1021這個整數更大而且屬於2的次方冪。

1 << (32 - (integer.numberofleadingzeros(i - 1))),得到的結果應該是1024。

位 位元組 編碼格式

位 bit 計算機中最小的資料單位。每一位的狀態只能是0或1。位元組 byte 儲存空間的基本計量單位,8個二進位制位構成乙個位元組 編碼格式 ascii 127個字元被編碼到計算機裡,也就是大小寫英文本母 數字和一些符號 unicode 把所有語言都統一到一套編碼裡,解決亂碼問題 gbk 有一位元...

位和位元組以及各類編碼簡述

位 bit,代表0或1 位元組 byte b 8bit 漢字 2byte 2b 16bit 乙個位元組在絕大部分計算機上都是8位,也就是從0000 0000到1111 1111,一共256個字元。ascii表上記錄了0000 0000 0111 1111 既0 127,一共128個字元 擴充套件as...

Python 編碼 進製 位 位元組

基本概念 首先理解兩個概念,有些東西是為了讓機器認識的,有些東西是為了讓人認識的。進製 2,3,8,10,16 都是為了機器可以直接理解的。編碼 ascii,unicode,utf 8 把只有機器認識的二進位制體現為人一眼就能看明白的字元。基礎知識 二進位制 0 1 八進位制 0 7 十進位制 0 ...