一、擴充套件乙個數字的位表示
一種常見的運算是在不同字長的整數之間轉換,例如,從乙個較小的資料型別轉換到乙個較大的資料型別。
將乙個無符號數轉換為乙個更大的資料型別,只需要簡單地在表示的開頭新增0,這種運算稱為零擴充套件。
將乙個補碼數字轉換為更大的資料型別要執行符合擴充套件,規則是在表示中新增最高有效位的值的副本。如果原始的位表示為
下面證明符號擴充套件是正確的,即證明下式:
表示式的左邊增加了k位
根據定義展開,
二、截斷數字
例如,在一台32位機上,將 int型別強制轉換為short時,就會將32位的int截斷為16位的,將乙個w位的數
對於乙個無符號數 x,截斷它到k位,相當於計算
對於乙個補碼數字 x, 相似的推理可知道,
參考:深入理解計算機系統(第二版)
寫乙個巨集函式交換乙個數字的偶數字元位和奇數字元位
想要交換乙個數的偶數字元位和奇數字元位 1.要想辦法提出奇數為和偶數字 任何數 1等於它本身,0 任何數都為0,所以要提出奇數字就要給奇數字都 1,偶數字都 0 要提出偶數字就要給偶數字都 1,奇數字都 0 num 0101 0101 0101 0101 0101 0101 0101 0101 就得...
797 到達乙個數字
中文english 你站在乙個無窮數軸上的0位置。在位置目標上有乙個目標。在每乙個動作中,你可以向左或向右。在第n次移動中 從1開始 你行走n步。返回到達目的地所需的最小步驟數。樣例1輸入 target 3 輸出 2 解釋 在第一步,我們從0到1。在第二步,我們從1到3。樣例2 輸入 target ...
判斷乙個數字是否可以表示成三的冪的和
給你乙個整數 n 如果你可以將 n 表示成若干個不同的三的冪之和,請你返回 true 否則請返回 false 對於乙個整數 y 如果存在整數 x 滿足 y 3x 我們稱這個整數 y 是三的冪。1.從最大的3的冪開始,如果大於等於剩餘數字,就應當使用這一冪次 因為剩下的所有冪次加起來也比它小 看最後是...