0與1的世界

2021-09-26 00:24:18 字數 2367 閱讀 6502

計算機的資訊儲存和邏輯計算的元資料,因為計算機是由電晶體、電路板組裝成的電子裝置。生活忠的十進位制是"逢十進一",同理0 1表示大於1的數字是"逢二進一",1,2,3,4用二進位制表示如果是4電路的話分別是0001,0010,0011,0100。

那麼負數怎麼表示?規定電路的最左側一位0表示正數1表示負數,所以8電路的表示範圍-1280127。

為了使減法運算也能使用加法器實現,符號位也能參與運算,二進位制最終都以補碼的形式出現。正數的原碼、補碼、反碼都一樣。負數的補碼是反碼加1。比如-5的二進位制是1101,反碼是1010,補碼是1011。

移位最常的用法是高低位的擷取(int轉byte[4]),移位的具體做法是補碼帶符號移動空位用0補上,負數右移高位補1。

無符號右移,向右移動不用像符號右移一樣需要給高位補1,正數不斷右移最小值是0,負數是1。

為啥負數最小值是1呢?在實際變成中位移存在int(32位)和long(64位)上,它們移動32位或者64位還是本身。

int i1 = 35;

int i2 = -35;

long l1 = 35;

long l2 = -35;

system.out.println("i1 >> 32 " + (i1 >> 32));

system.out.println("i1 >>> 32 " + (i1 >>> 32));

system.out.println("i1 >>> 31 " + (i1 >>> 31));

system.out.println("i1 << 32 " + (i1 << 32));

system.out.println("i2 >> 32 " + (i2 >> 32));

system.out.println("i2 >>> 32 " + (i2 >>> 32));

system.out.println("i2 >>> 31 " + (i2 >>> 31));

system.out.println("i2 << 32 " + (i2 << 32));

system.out.println("l1 >> 64 " + (l1 >> 64));

system.out.println("l1 >>> 64 " + (l1 >>> 64));

system.out.println("l1 >>> 63 " + (l1 >>> 63));

system.out.println("l1 << 64 " + (l1 << 64));

system.out.println("l2 >> 64 " + (l2 >> 64));

system.out.println("l2 >>> 64 " + (l2 >>> 64));

system.out.println("l2 >>> 63 " + (l2 >>> 63));

system.out.println("l2 << 64 " + (l2 << 64));

位運算有與(&)、或(|)、取反(~)、異或(^)等。邏輯也有與(&&)、或(||),邏輯只能操作布林型別返回布林型別的,布林型別底層也是用0和1表示的。但是邏輯的是短路的,如下

boolean a = true;

boolean b = true;

boolean c = (a = (1 == 2)) && (b = (1 == 2));

system.out.println(a + " " + b);

boolean a1 = true;

boolean b1 = true;

boolean c1 = (a1 = (1 == 2)) & (b1 = (1 == 2));

system.out.println(a1 + " " + b1);

boolean a3 = true;

boolean b3 = false;

boolean c3 = (a3 = (1 == 1)) || (b3 = (1 == 1));

system.out.println(a3 + " " + b3);

boolean a4 = true;

boolean b4 = false;

boolean c4 = (a4 = (1 == 1)) | (b4 = (1 == 1));

system.out.println(a4 + " " + b4);

boolean a5 = true;

boolean b5 = false;

boolean c5 = a5^b5 ;

system.out.println("異或不同才是true"+c5);

電平轉換電路 邏輯電平0和1的世界

我們生活在模擬訊號的世界中,但在數字電子裝置中,只有兩種狀態 開或關。使用這兩種狀態,裝置可以編碼,傳輸和控制大量資料。從廣義上講,邏輯電平描述訊號可以具有的任何特定的離散狀態。在數字電子學中,我們通常將研究限於兩個邏輯狀態 二進位制1和二進位制0。一 什麼是邏輯電平?邏輯電平是特定電壓或可以存在訊...

第二章 數制與編碼 帶你走進0和1的世界

本章重點內容 1,無符號數的表示與運算 2,帶符號數的表示與運算 3,資訊的編碼 4,數的定點與浮點表示法 1,各種進製的表示 注 預設字尾的情況下預設為十進位制 2,各種進製數間的轉換 1 其他進製轉化為十進位制 按權展開求和法 2 十進位制轉化為其他進製 對於整數部分,除基取餘法 對於小數部分,...

從 0 和 1 開始,揭開數字世界的神秘面紗

從一種理性的角度看,我們生活中的任何事物都可以用 0 和 1 表示,包括物件 動作 環境 結果。舉個例子 我們用 0 1 對隨便舉的例子的元素做一些標記,下雨天 0001 小明 0001 和小紅 0001 去約會 0001 晴天 0010 小強 0010 和小紅 0001 去看電影 0010 這裡每...