有关于short,int,long的内容

  首先,我们要理解“位”,“字节”,“字”(word),这三个的意思。

  位(bit)是储存的最小单位,只能放一个机器语言里的0或1。

  字节(byte),8个位(bit)就是一个字节,所以1字节=8位,4字节就是32位。

  字(word)的长度跟计算机性能有关,如16位的计算机,它的字长度就是2个字节,32位的计算机,字长就是4个字节。

一般情况:

1、int通常代表特定机器中证书的自然长度。

2、long long 类型为64位,long类型位32位,short类型为16位,int类型为16位或32位。

3、原则上这四种类型代表4个不同大小的数值。

4、各编译器可以根据硬件特性自主选择合适的类型长度,但要遵循下列限制:short与int类型至少为16位,long类型至少为32位,并且short类型不得长于int类型,而int类型不得长于long类型。

5、一般,short类型为半个机器字长(word)长,int类型为一个机器字长,而long类型为一个或两个机器字长(在32位机器中int类型和long类型通常字长是相同的)。参看上面字的长度解释。


类型


16位系统/字节


32位系统/字节


64位系统/字节


char


1


1


1


char*


2


4


8


short


2


2


2


int


2


4


4


long


4


4


8


long long


8


8


8

从表中可以看出这么几个问题,int类型在64位系统下竟然是4个字节32位的。还有,这些玩意儿到底跟什么有关系?是谁在控制着?从网上扒了各种解释,大概有这么两点:

1、64位系统下,编译器为了向前兼容,将int类型自动编译为4个字节的了;

2、这些个玩意儿就是编译器来控制的,不同的编译器将int类型编译成不同长度的,所以,使用什么编译器才是重要的,比如:32位系统,tc下的int就是16位长度的,VC就是32位长度的。如果你的系统是64,那么编译器软件默认安装路径有Program File(x86),它就是32位的编译器。

3、long long是标准的8 bytes,不受编译器限制,所以,16位的依然也是8 bytes。

4、我们在使用整型变量的时候还是得小心的,尤其需要其所占空间长度的时候,千万不要想当然的认为int在32位系统下就是4个字节。尽量使用sizeof取值。

时间: 2024-12-24 11:30:58

有关于short,int,long的内容的相关文章

char,short ,int ,long,long long,unsigned long long数据范围

速查表: char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65535 (2 Bytes)int -2147483648 ~ +2147483647 (4 Bytes)unsigned int 0 ~ 4294967295 (4 Bytes)long == intlong long -9223372036854775808 ~ +9223372036854775807 (8 Bytes)doub

[PCS] Hw1. Short int & Float

一.使用 short int 和 float 两种类型的变量计算和验证两个问题. 1. x ^ 2 >= 0 ? // 使用 C++ 编码如下(只显示 main 函数内的部分,头文件包括<iostream>, <limits.h>, <float.h>, <stdio.h>): // 对于 short int 类型,其范围应为 [-32768,+32767] for (short int i = -32768; i < 32768; i++){

java中整数类型(short int lang)的存储方式

在java中的整数类型有四种,分别是 byte  short int long 其中byte只有一个字节 0或1,在此不详细讲解. 其他的三种类型如下: 1.基本类型:short 二进制位数:16包装类:java.lang.Short最小值:Short.MIN_VALUE=-32768 (-2的15此方)最大值:Short.MAX_VALUE=32767 (2的15次方-1) 2.基本类型:int 二进制位数:32包装类:java.lang.Integer最小值:Integer.MIN_VALU

C++ short/int/long/long long 等数据类型大小

表 1 整型数据类型 数据类型 字节大小 数值范围 short int (短整型) 2 字节 -32 768 ?+32 767 unsigned short int(无符号短整型) 2 字节 0 ?+65 535 int (整型) 4 字节 -2 147 483 648 ?+2 147 483 647 unsigned int (无符号整型) 4 字节 0 ?4 294 967 295 long int (长整型) 4 字节 -2 147 483 648 ?+2 147 483 647 unsi

java整型byte,short,int,long取值范围大小

 byte 1个字节 short 2个字节 int 4个字节long 8 个字节 varchar 可变长度的非Unicode数据,最长为8000个字符nvarchar 可变长度Unicode数据,最长为4000个字符char 固定长度的非Unicode数据,最长为8000个字符nchar 固定长度的Unicode数据,最长为4000个字符 非Unicode字符串的数据类型 包括char ,varchar,text; Unicode字符串的数据类型 包括nchar ,nvarchar,ntext;

android中byte[] short[] int[] long[]数组数据转换

import java.nio.ByteOrder; public class BytesTransUtils { private String TAG = "BytesTransUtils"; private static BytesTransUtils instance = null; private BytesTransUtils() { // Log.i(TAG, "instance BytesTransUtils"); } public static By

java中的char,short,int,long占几个字节

1:"字节"是byte,"位"是bit : 2: 1 byte = 8 bit : char 在java中是2个字节.java采用unicode,2个字节(16位)来表示一个字符. short 2个字节int 4个字节long 8个字节 原文地址:https://www.cnblogs.com/xiaozhijing/p/8295885.html

Java中char,short,int,long占几个字节和多少位

1.字节:byte:用来计量存储容量的一种计量单位:位:bit 2.一个字节等于8位  1byte = 8bit char占用的是2个字节 16位,所以一个char类型的可以存储一个汉字. 整型: byte:1个字节 8位 -128~127 short :2个字节 16位 int :4个字节 32位 long:8个字节 64位 浮点型: float:4个字节 32 位 double :8个字节 64位 注:默认的是double类型,如3.14是double类型的,加后缀F(3.14F)则为flo

Java中基本数据类型byte,short,char,int,long,float,double

部分内容转自:java 彻底理解 byte char short int float long double 首先说byte: 这段是摘自jdk中 Byte.java中的源代码: 1 /** 2 * A constant holding the minimum value a <code>byte</code> can 3 * have, -2<sup>7</sup>. 4 */ 5 public static final byte MIN_VALUE =

C# 与数据库中字段类型 Int16(short), Int32(int), Int64(long)的取值范围、区别 。string长度

一开始看到Int16, Int32, Int64这三种类型就觉得有点怪, 为什么要整个数字结尾的, 挺怪的. 昨天互相想到, ms这么干就是想让大家一眼就知道这个数据类型占多大空间吧. Int8, 等于byte, Int16, 等于short, 占2个字节. -32768 32767 Int32, 等于int, 占4个字节. -2147483648 2147483647 Int64, 等于long, 占8个字节. -9223372036854775808 9223372036854775807