負數十六進位制快速計算方法
負數十六進位制快速計算方法
起因:找工作時筆試過程中經常遇到十進位制轉十六進位制的題目,
而且會時不時遇到負數轉十六進位制的題目,題目考察的是應聘
者對進位制轉換的掌握程度。
傳統思路:1.先將十進位制轉二進位制再取反得反碼後加1得到補碼
2.將二進位制4位一組劃分轉成對應十六進位制
突發奇想轉換思路:假設我們要轉換的是32位平臺下的int型別
(4位元組32位)的-13,那我們可以快速寫出-1的十六進位制為:
FFFFFFFF(有符號型別的資料-1就是其類型範圍的最大值,8位
char型別的-1為FF,這個比較好記,都是F,4位一個F,8位兩個F
依此類推),那麼32位-13 = -1 - 12,則-13的補碼就是-1的補
碼減去12,則32位的-13補碼十六進位制即為:
FFFFFFFF - 12 = FFFFFFF3
擴充套件:同樣我們可以擴充套件一下,例如C中我們可以將-1強轉為無
符號數除以2就可以得到有符號數正數的範圍的上限(雖然沒用,
但是可以提供一種巧用的思路)
原創文章,裝載請附上原連結。
相關推薦
負數十六進位制快速計算方法
負數十六進位制快速計算方法 起因:找工作時筆試過程中經常遇到十進位制轉十六進位制的題目, 而且會時不時遇到負數轉十六進位制的題目,題目考察的是應聘 者對進位制轉換的掌握程度。 傳統思路:1.先將十進位制轉二進位制再取反得反碼後加1得到補碼 2.將二進位制4位一組劃分轉成對應十六進位制
iOS直接使用十六進位制顏色轉換方法
在UIColor的類裡面新增類別方法,可直接使用輸入十六進位制顏色,無需轉換 + (UIColor *)colorWithHexString:(NSString *)color { NSString *cString = [[color strin
浮點數float轉換成十六進位制字串的方法(FloatToHex)
重新書寫了float型轉為十六進位制的delphi程式 Function FloatToHex(Value: single): string; var l, i: integer; HexText,tempHexText,temp: Strin
0x80000000儲存和表示問題 十六進位制負數表示
1.負數在記憶體中的儲存形式 (1)十進位制負數以補碼儲存於記憶體上 -8的在記憶體上儲存形式: 1...1000 (2)十六進位制負數以原碼儲存在記憶體上 int i = 0x80000001 // i=-1在記憶體上表示為 10...01 (
Java 十六進位制轉十進位制正負數
/** * 十六進位制轉正負數 * (2個位元組的) */ public static double parseHex4(Str
SHA256計算後進行十六進位制轉碼
/** * sha256計算後進行16進位制轉換 * * @param data 待計算的資料 * @param encoding 編碼 * @return 計算結果 */ public static byte[] sha256X16(String data, Stri
C# 負數和十六進位制轉換
C# 負數和十六進位制轉換 1 /// <summary> 2 /// 十六進位制轉為負數 3 /// </summary> 4 /// <param na
十六進位制相關(計算機儲存十六進位制負數、與十進位制轉換)
負數的十六進位制表示 剛開始沒多思考,不知道如何表示負數。 原碼 反碼 補碼 在計算機中,資料是以補碼的形式儲存的。 正數的原碼,補碼,反碼都相同,都等於它本身 負數的補碼是:符號位為1,其餘各位求反,末位加1 反碼是:符號位為
我的Android進階之旅------>Android顏色值(#AARRGGBB)透明度百分比和十六進位制對應關係以及計算方法
透明度百分比和十六進位制對應關係表格 透明度 十六進位制 100% FF 99% FC 98% FA 97% F7 96%
c#計算十六進位制字串的和校驗
演算法流程: 1.去除不必要字元(例如其他符號和 0x 這樣的標識) 這裡使用字串string的Replace函式來完成,例如我要處理的原型字串dat為:0xAA,0xE0,0x01,0x00
Android顏色值(#AARRGGBB)透明度百分比和十六進位制對應關係以及計算方法
public void switch() throws Exception { System.out.println("透明度 | 十六進位制"); System.out.println("---- | ----"); for (double i = 1; i
十進位制負數轉換為二進位制、八進位制、十六進位制
直接進入主題.... 問題:-3如何轉換成二進位制? 首先我們將+3轉換成二進位制,假設是為int型別(32位)的,那麼二進位制表示為: 0000 0000 0000 0000 0000 0000 0000 0011 --
android 藍芽模組Bluetooth 使用 十六進位制資料傳送
一個藍芽模組看起來很小,弄起來還是有點複雜的,從網上找了一個示例程式碼,http://blog.csdn.net/vnanyesheshou/article/details/51554852但是不能直接用,需要自己進行閱讀理解和修改後才能使用。 先貼一張自制的uml圖: 從圖中不難看出
Python: 二進位制、八進位制、十六進位制轉換或者輸出
為了將整數轉換為二進位制、八進位制或十六進位制的文字串,可以分別使用bin() ,oct() 或hex() 函式: >>> x = 1234 >>> bin(x) '0b10011010010' >>> oct(x) '0o2322' >&g
QT十進位制十六進位制字串轉換
QByteArray在串列埠通訊中經常被使用,有一定必要較為全面詳細的對QByteArray進行闡述。本文通過以下幾個部分加以介紹: 1. 初始化 2. 訪問與賦值 3. 新增、刪除、插入與替換操作 4. 查詢與比較 5. 資料轉換與處理 1 初始化 2 訪問與賦值
【Java篇02】二進位制、十進位制、十六進位制之間的相互轉換
1. 二進位制 -> 十六進位制 eg: 二進位制數 1001 1010; 通過1248賦值法,即 1001 1010 8421 8421 --------------- 1+8=9 , 2+8=10; 即二進位制數1001 1010,對應十六進位制的數為 o
CSDN中字型顏色的十六進位制表(轉載)
顏色名列表 顏色名 十六進位制顏色值 顏色 AliceBlue #F0F8FF rgb(240, 248, 255) AntiqueWhite #FAEBD7
[計算機程式設計C++] 輸入整數顯示十六進位制和八進位制
12 輸入整數顯示十六進位制和八進位制(10分) 題目內容: 編寫程式,輸入整數,顯示其十進位制、十六進位制和八進位制形式。如輸入31,輸出: -31 -1f -37 輸入:一個整數,注意,可能是負數。 輸出:三個數,十進位制、十六進位制和八進位制,用空格隔開。 提示
Java:十六進位制轉換成十進位制
問題及程式碼: /* *問題描述 從鍵盤輸入一個不超過8位的正的十六進位制數字符串,將它轉換為正的十進位制數後輸出。 注:十六進位制數中的10~15分別用大寫的英文字母A、B、C、D、E、F表示。 *
二進位制,十進位制,十六進位制互相轉化
二進位制轉化為十進位制:(1)從右向左數,確定所數的數字是第幾位(編號為n),轉化為十進位制的時候,用這個數乘以2的n-1次方,以此類推,將各個位上的數所得的式子相加即可,便得到了十進位制數。 特殊情況,如:二進位制數100,1000,10000,