上位機級,位機有符號無符號之間的關係及互換

2021-09-19 20:19:45 字數 1782 閱讀 1600

首先,我們直**,

w(8)位有符號的值範圍為 -2(w - 1) ~ 2(w - 1) - 1 = -128 ~ 127;

w(8)位無符號的值範圍2(w) - 1 = 255;

2(w) / 2(w - 1) = 2

2(5) / 2(5 - 1) = 2(5) / 2(4) = (2 * 2 * 2 * 2 * 2) / (2 * 2 * 2 * 2) = 2

v = -12345 (有符號)

有符號數補碼我們之前已經講過相關的轉換步驟了

既先取絕對

值的原碼,再按位取反 ,再加1

|-12345| =0x3039 十進位制轉16 用除16 以余作16進製制有效位 ,最先的餘數有效位最低,最後的有效位最高,每次的商接著除16,一直到最未餘數。

(128,64,32,16,((8,4,2,1))將-12345原碼的二進位制0011 0000 0011 1001   反碼取反是1100 1111 1100 0110 然後再加1 是 1100 1111 1100 0111 既-12345有符號數的補碼 

原碼:        0011 0000 0011 1001(十六進製制為:0x3039,十進位制為: 3 * 16(3) + 0 * 16(2) + 3 * 16(1) + 9 * 16(0)) = 3 * 4096 + 0 + 48 + 9 *1 = 3 * 4096 + 57= 12345

反碼:        1100 1111 1100 0110(十六進製制為0xcfc6,十進位制為:12 * 16(3)+15 *16(2)+12 * 16(1)+6 * 16(0)) = 12 * 4096 + 15 * 256 + 12 * 16 + 6 = 201388230

反碼+ 1   1100 1111 1100 0111()

我們再來看下w = 16時 ,無符號,有符號可儲存的數值範圍:

無符號2(16) - 1 = 65535

有符號 -2(16 - 1) ~ 2(16 - 1) - 1 為,-32768 ~ 32767

十進位制,二進位制 ,十六進製制

一般 十進位制轉換成二進位制,我一般是講 十進位制先先轉成十六進製制,再講十六進製制轉換成二進位制,因為 二進位制和十六進製制之間的轉換很好換算 ,乙個十六進製制轉成4個二進位制,同樣的4個二進位制轉成1個十六進製制.

至此我們主要接觸的相對新手較難的知識點有移位,有符號補碼,無符號補碼規則。

其實無符號,有符號 對於這兩個名詞我們從漢字理解就能看出些頭緒  無符號就是 所有的符號都表示資料,有符號呢就是 最高的有效位為符號位

當最高有效位為1時,表示的資料為負數,當最高有效位為0時,表示的資料為 非負.

就是有符號位的最高有效位既符號位為0時,此有符號資料既為無符號數

我們又講到,正數的補碼是它本身,負數的補碼是值取反加1

有符號數是針對二進位制來講的。用最高為作為符號位,"0"代表"+"

"1" 代表"-" 其餘數字作數值位,代表數值。

無符號就是沒有符號位,所有位都表示數值

有符號位就是就符號位,最高位為符號位  最高位 為1 時 "-"

如果有符號數的最高位為1 則將有符號數取補碼得到的就是無符號

有符號數最高位符號位為1是,講有符號資料取補碼,得到的就算無符號數

有符號數轉換成無符號 看 有符號數的 最高位是否為1,如果不為1(既為0) 則有符號資料直接就算無符號數

有符號 -> 無符號 ,如果有符號數最高有效位符號位為0 則有符號資料直接就算無符號資料

如果有符號資料最高有效位為1 ,則將有符號資料取補碼   得到的數就算無法和

如果無符號最高位1 ,則將無符號數提取補碼  ,得到有符號

上位機級,位機有符號無符號之間的關係及互換

首先,我們直 w 8 位有符號的值範圍為 2 w 1 2 w 1 1 128 127 w 8 位無符號的值範圍2 w 1 255 2 w 2 w 1 2 2 5 2 5 1 2 5 2 4 2 2 2 2 2 2 2 2 2 2 v 12345 有符號 有符號數補碼我們之前已經講過相關的轉換步驟了 ...

有符號型別與無符號型別之間的轉換

void foo void unsigned int a 6 int b 20 a b 6 puts 6 puts 6 printf b x n b b 0xffffffec 這個問題測試你是否懂得c語言中的整數自動轉換原則 這無符號整型問題的答案是輸出是 6 原因是當表示式中存在有符號型別和無符號...

C語言有符號和無符號之間的轉換

無符號數 不存在正負之分,所有位都用來表示數的本身。有符號數 最高位用來表示數的正負,最高位為1則表示負數,最高位為0則表示正數。1 無符號數 有符號數 看無符號數的最高位是否為1,如果不為1 為0 則有符號數就直接等於無符號數 如果無符號數的最高位為1,則將無符號數取補碼,得到的數就是有符號數。2...