1. 程式人生 > >怎樣記住Integer的最大值(有趣的思維和搞笑的回答)

怎樣記住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