3

I have been looking into 32-bit or 64-bit Android versions for phones. It seems to me that the information on the number of bits of the installed Android version is always missing from phones' specs, unlike what happens for the CPU. Googling around, the ways I have found to understand whether a phone is running a 32-bit or a 64-bit OS all include actually doing something with the phone, like looking up the kernel version or downloading some app, like AIDA64.

How do I know if a phone I want to buy will come with a 32-bit or a 64-bit Android before I buy it? It would be interesting to find a layman-friendly criterion or resource that allows me to know this in advance, especially to be able to look into the cheapest phones running a 64-bit Android.

Marco Vergura
  • 131
  • 1
  • 4
  • Are you looking for website or on device indicator? Or just buy a phone with at least 6GB of RAM which requires 64-bit support. – Morrison Chang Jun 28 '19 at 04:03

2 Answers2

3

One way to know that the OS is 64-bit is to check the RAM. 32-bit OSes have (see/utilise) a maximum of 4GB of RAM while 64-bit devices see more. Devices with more than 4GB of RAM will be using 64-bit Android.

Limits are as followed:

32-bit: 2^32 = 2^2 * 2^30 = 4GB. A 32-bit OS will go 1 bits up to 4GB.

64-bit: 2^64 = 2^4 * 2^60 = 16EB. A 64-bit OS will go 1 bits up to 16EB.

Up to 4GB, the RAM won't help differentiating whether it is 32 or 64-bit. More than 4GB, then it is more than likely to be 64-bit.

Large Physical Address Extension(LPAE) was implemented to allow physical address up to 40-bit. But as @Irfan as inferred, it is not known (at least publicly) if there are devices in the market which have taken advantage of it.

Conversion table
-----------------
2^10 = 1 KB
2^20 = 1 MB
2^30 = 1 GB
2^40 = 1 TB
2^50 = 1 PB
2^60 = 1 EB  
Reddy Lutonadio
  • 7,164
  • 2
  • 17
  • 49
  • 1
    I have Redmi Note 4 with 3GB DDR3, but it's 64-bit. So this criteria could be misleading sometimes, partially applicable. – Irfan Latif Jun 28 '19 at 13:58
  • 1
    @IrfanLatif Could you explain the misleading part? Because I said that devices with more than maximum of 4GB of RAM will have 32 bit OS. But a device with more than 4GB will be 64-bit (it doesn't mean that a 64-bit OS can't handle less than 4GB of RAM, but that the 32+bit OS can't handle more than 4GB). I will be more than happy to edit, if you think it's necessary. – Reddy Lutonadio Jun 28 '19 at 15:56
  • @ReddyLutonadio Only windows sees restrictions in handling RAM for 64/32 bir – unixandria Jun 28 '19 at 16:46
  • @ReddyLutonadio A phone comes with 3GB RAM. Based on your answer, one can't be sure if it's 32 bit or 64 bit. If RAM >= 4GB, then the criteria holds good. But some 32-bit architecture also supported larger RAMs? I remember some news from a few years back. – Irfan Latif Jun 28 '19 at 17:42
  • Also include a reference to LPAE, though I'm not sure if any devices are/were shipped with this. – Irfan Latif Jun 29 '19 at 05:01
1

Until the manufacturer doesn't describe the technical specifications of OS included with a device, it's hard to say if it's 32-bit or 64-bit. But a device with 64-bit hardware is expected to come with 64-bit OS (not always), let's take a look how to identify 64-bit hardware.

To find out if a device is 32-bit or 64-bit, you need to check the specifications of its SoC and then of its processor. For instance SoC in Redmi Note 4 is Qualcomm Snapdragon 625 (MSM 8953), which contains processor Cortex-A53. It's evident from technical specifications of Cortex-53 that it's based on ARMv8 architecture, which can process 2 types of Instruction Sets: aarch64 (which Android's arm64-v8a ABI uses) and aarch32 (which Android's armeabi-v7a ABI uses). So the phone is 64-bit, shipped with a 64-bit OS.

On-device processor/SoC information can be checked using some third party app as you have mentioned, or directly from CLI: uname -m, cat /proc/cpuinfo, cat /sys/firmware/devicetree/base/model etc.

RELATED: Android apps for “armeabi-v7a” and “x86” architecture: SoC vs. Processor vs. ABI

Irfan Latif
  • 20,353
  • 3
  • 70
  • 213
  • 4
    What you wrote is correct, however a 64bit CPU doe not necessarily means that the phone is running a 64bit version of Android. – Robert Jun 28 '19 at 09:18
  • 1
    @Robert valid point, I was focusing hardware aspect. But I don't think one would prefer 32-bit OS on a 64-bit hardware, isn't it? It's a wastage of resources then. If a phone's specs aren't out from OEM, I don't think there is way to find out if Android ROM is 64 or 32 bit. But they don't tell much about stock ROM usually, other than Android version, or if it's heavy mod on AOSP like MIUI. – Irfan Latif Jun 28 '19 at 09:33
  • I don't know the numbers but it is not uncommon to use a 32bit OS on a 64bit capable hardware. Just think of the Raspberry which has 64bit hardware since 4 years and finally this year gets a 64bit OS. – Robert Jun 28 '19 at 11:37
  • Raspberry Pi is a learning PC, not a phone, maintained by a foundation. There isn't any beneficiary giant corporate group behind that. So they don't have teams of paid developers working 24/7. And is more open source as compared to Android based phones. – Irfan Latif Jun 28 '19 at 11:45
  • I'd also like to point out most armeabi-v7a CPUs are actually 64 bit but generally run a 32 bit version of Android. Arm64-v8a however is always 64 bit – unixandria Jun 28 '19 at 16:47
  • @colbycdev I always though armeabi-v7a ABI and ARMv7-A CPU were always 32-bit. – Irfan Latif Jun 28 '19 at 17:37
  • @IrfanLatif nope. For instance the SoC in the Moto g6 is armeabi-v7a but Qualcomm spec for it says it's 64 bit – unixandria Jun 28 '19 at 17:41
  • @colbycdev SoC in Moto G6 is Snapdragon 450, which contains processor Cortex-A53, which is based on ARMv8 architecture, which can process 2 types of Instruction Sets: aarch64 (which Android's arm64-v8a ABI uses) and aarch32 (which Android's armeabi-v7a ABI uses). That's what my understanding is. – Irfan Latif Jun 28 '19 at 18:17
  • @IrfanLatif hmm ok. Just know it's armeabi-v7a didn't know it was ARMv8 – unixandria Jun 29 '19 at 00:43
  • 1
    Also getconf LONG_BIT returns 64 on my Pixel 4a, Android 13. Not sure if it can be added to the methods mentioned in the last section of your answer. This was using Termux – beeshyams Dec 04 '22 at 14:46
  • 1
    And lscpu on Termux returns CPU op-mode(s): 32-bit, 64-bit (amongst a ton of details) – beeshyams Dec 04 '22 at 14:52