怎樣記住Integer的最大值(有趣的思維和搞笑的回答)
前言
今天一個同事問我,資料庫裡面的某表如果用int做PK,那該表最多可以放多少記錄,我說簡單啊,就是2^31(正數),跟.NET的Int32.MaxValue一樣,約等於20億(正數)吧。同事說,那具體什麼數字呢?這就難倒我了,因為我從來不記住具體某個數字,就算是Pi我也只記住3.1415926,我甚至曾經連自己的手機號碼都沒記住,打電話給朋友讓他根據來電顯示告訴我我手機號碼。。。
我能記住這個值是約等於20億是因為在上一個公司的系統中,單表超過30億。。。所以我們不用int。。。
看法
雖然我知道.NET有Int32.MaxValue,但我想知道有沒有簡便易記的辦法,雖然我覺得記住這個數字沒啥特別的用途。。。
Google大神
Google是一個偉大的發明,StackOverflow是一個屌絲程式設計師的逆襲故事。。。它告訴了我一些好玩的答案:http://stackoverflow.com/questions/94591/what-is-the-maximum-value-for-a-int32
質疑
毫無疑問,很多人質疑提問者為什麼需要記住這個數字,不過今天我們關心的,是不同的程式設計師的不同記憶方法。
答案1-標準答案
(2^31)-1 = 2,147,483,647,這就是“標準”答案。最小的值是-2,147,483,648。
答案2-紋身
一個程式設計師說,或許你可以弄個紋身,當然了,這只是一個西方的玩笑,相信中國沒多少程式設計師願意把這一點數字刻印章身上,除非是你的女神的生日或者三維。。。
搞笑的是,一個回覆者說最小值是-2,147,483,647。。。。然後被其他回覆者指出應該是-2,147,483,648,然後該回復者說:天啊,那我的紋身該怎麼辦。。。換個例子,你刻了女神的生日站身上,如果分手了,換了個女朋友,你怎麼辦。。。
答案3-找茬
1. 一個碼農說,敲2,147,486,647 這個值還不如int.MaxValue,因為當你輸入int.M,自動完成就有最大值了。。。
2.另外一個碼農說,用二進位制,那就是1111111111111111111111111111111,你是否覺得腦袋更痛。。。
答案4-Google
一個碼農說,隨便一個搜尋引擎一輸入就有了。。。(跟我的想法真像。。。)
答案5-有意義的句子
這個做法我最喜歡:
a=1,b=2,c=3,d=4,e=5,f=6,g=7,h=8,i=9
Boys And Dogs Go Duck Hunting, Come Friday Ducks Hide
2 1 4 7 4 8 3 6 4 8
不過這是使用英文的程式設計師的做法,對使用中文的程式設計師來,記住這些單詞,或許比記住這串數字更難。。。
答案6-簡單有效的分段
我比較喜歡這個簡單的做法
2^(x+y) = 2^x * 2^y 2^10 ~ 1,000 2^20 ~ 1,000,000 2^30 ~ 1,000,000,000 2^40 ~ 1,000,000,000,000 (etc.) 2^1 = 2 2^2 = 4 2^3 = 8 2^4 = 16 2^5 = 32 2^6 = 64 2^7 = 128 2^8 = 256 2^9 = 512
有趣的回覆是:“硬碟廠商也是這樣乾的”。。。笑噴
答案7-常見
2GB
沒錯,就是大家日常所見的空間/大小。容易記吧?
答案8-計算器
拿出你的計算器,切換到Hex,輸入“7FFFFFFF”。
另外一個碼農說,為什麼不直接輸入2^31。。。
答案9-電話號碼
美國和澳洲的電話號碼位數都是10位,可以這樣記。中國大城市固定電話區號+號碼也是10位,把它當成電話邊可以記住了。
某蛋痛碼農還校驗了一下該電話號碼的真偽。。。另外一個碼農說:你怎麼把我的電話號碼給公開了。。。
答案-你呢?
你覺得有啥好辦法記住這個數字呢?
相關推薦
怎樣記住Integer的最大值(有趣的思維和搞笑的回答)
前言 今天一個同事問我,資料庫裡面的某表如果用int做PK,那該表最多可以放多少記錄,我說簡單啊,就是2^31(正數),跟.NET的Int32.MaxValue一樣,約等於20億(正數)吧。同事說,那具體什麼數字呢?這就難倒我了,因為我從來不記住具體某個數字,就算是Pi我也只記住3.1415926,我甚至曾
js獲取陣列最大值(Math.max.apply(null, arr))
/** * 獲取陣列的最大值 * @param {Array<number>} arr 陣列型別 且元素為number * @returns {any} */ getMax(arr: Array<number>) { // 利用app
HihoCoder - 1496:尋找最大值(高維字首和||手動求子集)
描述 給定N個數A1, A2, A3, ... AN,小Ho想從中找到兩個數Ai和Aj(i ≠ j)使得乘積Ai × Aj × (Ai AND Aj)最大。其中AND是按位與操作。 小Ho當然知道怎麼做。現在他想把這個問題交給你。 輸入 第一行
hihocoder1496 尋找最大值(offer收割程式設計練習賽12D)
題目大意:在1e5個數裡尋找兩個數a[i],a[j] ,(i!=j )使得 a[i] * a[j] * (a[i]&a[j]) 為最大值。 思路:對於a[i]&num,在a[i]的二進位制位下來說,不會使a[i]&num==0的應該
樹狀數組求最大值 (RMQ with Shifts)
art code else pan [1] int space -s article 代碼: #include <iostream> #include <stdio.h> #include <string.h> #include
Hihocoder 1496 尋找最大值(狀態壓縮 + 高位前綴和)
ems sca 題目 二進制 包含 aps void post 前綴 題目鏈接 Hiho 1496 設$f[i]$為二進制集合包含$i$的最大的兩個數,這個東西用高維前綴和維護。 高位前綴和轉移的具體方案 :枚舉每一位,然後枚舉每個集合,大的轉移到小的。 註意合並的
【劍指offer】59、隊列的最大值(不熟)
最大值 ber 元素 const 所有 刪除元素 windows 窗口 push_back 題目一 給定一個數組和滑動窗口的大小,請找出所有滑動窗口裏的最大值。例如,{2,3,4,2,6,2,5,1}以及窗口大小3,那麽存在6個滑動窗口,最大值分別為{4,4,6,6,6,5
演算法題 90:從多個數組中找最大值(百度筆試題
題目:有n個長度均為m的整型陣列,陣列中的元素都是從小到大有序排列,從所有這些陣列m*n個數中,找出值最大的前k個。請給出思路和時間複雜度。 類似賽馬問題做法 本Markdown編輯器使用StackEdit修改而來,用它寫部落格,將會帶來全新的體驗哦: Markdown和擴
求一個二維陣列所有子陣列和的最大值(郭少周,陳澤)
小組成員:陳澤 郭少周 設計流程: 設計要求.:1. 輸入一個二維整形陣列,數組裡有正數也有負數。 2.二維陣列中連續的
51Nod 1277 - 字串中的最大值(KMP)
【題目描述】 【思路】 假設現在有一個位置 p o s
Leet515.在每個樹行中找最大值(Find Largest Value in Each Tree Row)
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; *
求矩陣的最大值(設惟一)
7-2 求矩陣的最大值(設惟一) (10 分) 本題要求編寫程式,求一個給定的m×n矩陣的最大值以及位置。題目保證最大值惟一。 輸入格式: 輸入第一行給出兩個正整數m和n(1≤m,n≤6)。隨後m行,每行給出n個整數,其間以空格分隔。 輸出格式: 輸出在第一行中輸出最大值,在第二行中
字串中的最大值(KMP)
【題目描述】 【思路】 假設現在有一個位置 pospospos ,其字首已經出現一次即 [0,pos−1][0,pos-1][0,pos−1] 這個字首已經出現了一次,現在考慮一下 next[pos]next[pos]next[pos] 的意義,其實就是包含
三個數最大值(if)
輸入三個數,輸出最大值; #include<stdio.h> int main() { int a,b,c,max; scanf("%d%d%d",&a,&
【動態規劃】數字三角形最大值(一)(遞迴)
題目:數字三角形,形如 3 3 2 4 5 1 1 3 4 1 每個點只能選擇向左或向右走,取一條路徑,使得路徑上數字和最大。 無需求出路徑,求出最大值。 輸入n,和 n 行數字三角形 n<
7-5 交換最小值和最大值(15 分)
7-5 交換最小值和最大值(15 分) 本題要求編寫程式,先將輸入的一系列整數中的最小值與第一個數交換,然後將最大值與最後一個數交換,最後輸出交換後的序列。 注意:題目保證最大和最小值都是唯一
劍指offer(47):禮物的最大值(動態規劃詳解,python版)
本部落格主要內容為圖書《劍指offer》第二版47 題的解題思路及程式碼。方法可能還有不足之處,歡迎大家討論評論。 1. 題目描述 在一個 m*n 的棋盤中的每一個格都放一個禮物,每個禮物都有一定的價值(價值大於0).你可以從棋盤的左上角開始
分治法找最大值(C語言)
根據分治思路找最大值: #include <stdio.h> int max(int a,int b){ if (a >= b) return a; else return b; } int find_max(int i,int j,int num[]){ int
求兩個數的最大值(用函式指標變數呼叫函式)
#include<stdio.h> int max(int a,int b) { if(a>b) return a; else return b; } int main() { int x,y,z; scanf("%d%d",&
6-5 求自定型別元素的最大值(10 分)
6-5 求自定型別元素的最大值(10 分)本題要求實現一個函式,求N個集合元素S[]中的最大值,其中集合元素的型別為自定義的ElementType。函式介面定義:ElementType Max( ElementType S[], int N ); 其中給定集合元素存放在陣列S