-
2021-06-27 18:00:48
字节
-
字节:byte:用来计量存储容量的一种计量单位;位:bit
-
一个字节等于8位 1byte = 8bit
1b = 8bit(位)
1Kb = 1024b
1Mb = 1024kb
1Gb = 1024Mb
字节的单位就是B,1个英文字母一般是占1个字节(根据不同的编码),一个中文一般是2个字节。
char占用的是2个字节 16位,所以一个char类型的可以存储一个汉字。
整型:
byte:1个字节 8位 -128~127
short :2个字节 16位 (-215~215-1)
int :4个字节 32位 (-231~231-1)
long:8个字节 64位 (-263~263-1)
浮点型:
float:4个字节 32 位
double :8个字节 64位
注:默认的是double类型,如3.14是double类型的,加后缀F(3.14F)则为float类型的。
char类型:
char:2个字节。
Boolean 类型:
boolean: (true or false)(并未指明是多少字节 1字节 1位 4字节)
补充:BigInteger类实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。
莫要把字节和字符弄混了,虽然二者就不在同一个位面
字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位;
字符是指计算机中使用的文字和符号。
更多相关内容 -
-
int占几个字节(c语言)?
2021-02-09 03:26:41int在16位编译器中占两个字节,int在32位编译器中占四个字节。“int”是整数类型的类型名,长整型的类型名为“long int”,可简写为“long”,“int”和“long”都是关键字。int在16位编译器中占两个字节,int在32位...int在16位编译器中占两个字节,int在32位编译器中占四个字节。“int”是整数类型的类型名,长整型的类型名为“long int”,可简写为“long”,“int”和“long”都是关键字。
int在16位编译器中占两个字节,int在32位编译器中占四个字节。
1、16位编译器
char :1个字节 char*(即指针变量): 2个字节 short int : 2个字节 int: 2个字节unsigned int : 2个字节float: 4个字节double: 8个字节long: 4个字节long long: 8个字节unsigned long: 4个字节
2、32位编译器
char :1个字节char*: 4个字节 short int : 2个字节int: 4个字节unsigned int : 4个字节float: 4个字节double: 8个字节long: 4个字节long long: 8个字节unsigned long: 4个字节
拓展资料:
整型数据的一般分类如下:
1、基本型:类型说明符为int,在内存中占2个字节。
2、短整型:类型说明符为short int或short。所占字节和取值范围均与基本型相同。
3、长整型:类型说明符为long int或long,在内存中占4个字节。
4、无符号型:类型说明符为unsigned。无符号型又可与上述三种类型匹配而构成:
1)无符号基本型:类型说明符为unsigned int或unsigned。
2)无符号短整型:类型说明符为unsigned short。
3)无符号长整型:类型说明符为unsigned long。
推荐教程:《C语言教程》
-
mysql中整数类型后面的数字,比如int(11),11代表11个字节吗?
2021-01-19 04:24:12原来以为int(11)是指11个字节,int(10)就是10个字节。我错了。http://zhidao.baidu.com/link?url=puYWaGBQNKNHgffO5kdvXshF3KmX8OuB4Mor3HXapbNHa8m1CdlF8PJTqVuKa1eKcEd6Bv2NKUr3I-KJr5-7ISLhBsmf17L...原先对mysql不太理解,但也没有报错。但理解的不够深入。这次补上。
原来以为int(11)是指11个字节,int(10)就是10个字节。我错了。
http://zhidao.baidu.com/link?url=puYWaGBQNKNHgffO5kdvXshF3KmX8OuB4Mor3HXapbNHa8m1CdlF8PJTqVuKa1eKcEd6Bv2NKUr3I-KJr5-7ISLhBsmf17Lu69vxv2aR99_
mysql的基本数据类型里几个int如下:
类型 大小 范围(有符号) 范围(无符号) 用途
TINYINT 1字节 (-128,127) (0,255) 小整数值
SMALLINT 2 字节 ( -2^15 :-32 768,2^15 - 1:32 767) (0,65 535) 大整数值
MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER(int 的 SQL-92 同义字为 integer) 4 字节 (-2^31:-2 147 483 648, 2^31 - 1:2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 字节 (-2^63:-9 233 372 036 854 775 808,2^63-1:9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
这些类型,是定长的,其容量是不会随着后面的数字而变化的,比如int(11)和int(8),都是一样的占4字节。tinyint(1)和tinyint(10)也都占用一个字节。
那么后面的11和8,有啥用呢。
http://zhidao.baidu.com/link?url=b0Z-WIhggaErl3uhMrAhoEXQG_3zotyd7r31O3RXSYiFJo1Cad-NeWN8cFXZFI50yVG_lpKooT7OjLhIa20ephKFJYD-fV9ZAv_o63AfyVq
mysql数据库中以 :数据类型(m) 来约束数据,其中 数字m在不同的数据类型中表示含义是不同的。 咱们这里只讲整数。
整型数系统已经限制了取值范围,tinyint占1个字节、int占4个字节。所以整型数后面的m不是表示的数据长度,而是表示数据在显示时显示的最小长度。
tinyint(1) 这里的1表示的是 最短显示一个字符。tinyint(2) 这里的2表示的是 最短显示两个字符。
当字符长度超过(m)时,相当于啥都没发生;
当字符长度小于(m)时,就需要指定拿某个字符来填充,比如zerofill(表示用0填充),
设置tinyint(2) zerofill 你插入1时他会显示01;设置tinyint(4) zerofill 你插入1时他会显示0001。
所以,没有zerofill,(m)就是无用的。
http://blog.csdn.net/phpwish/article/details/7845921
综上整型的数据类型括号内的数字不管是多少,所占的存储空间都固定的。
http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/08/25/2153016.html
mysql 中int(1)和tinyint(1)中的1只是指定显示长度,并不表示存储长度,只有字段指定zerofill时有用。
位数限制基本没有意义。
在mysql中我做过实验,对于一个tinyint类型的字段,不管它是tinyint(1)还是tinyint(2)还是tinyint(3),
当你插入大于127的数,都会存入127。跟上文中的结论是一样的。
总结:int(11),tinyint(1),bigint(20),后面的数字,不代表占用空间容量。而代表最小显示位数。这个东西基本没有意义,除非你对字段指定zerofill。
所以我们在设计mysql数据库时,
建表时,mysql会自动分配长度:int(11)、tinyint(4)、smallint(6)、mediumint(9)、bigint(20)。
所以,就用这些默认的显示长度就可以了。不用再去自己填长度,比如搞个int(10)、tinyint(1)之类的,基本没用。而且导致表的字段类型多样化。
http://blog.csdn.net/longyulu/article/details/7326581
该文很好地总结了mysql所有的数据类型。
我在建一个float类型的字段时,故意建成float(2,3)型,是错误的。报错如下。
第一个数字M,代表总长度限制(总长度包括小数位和整数位),2代表总长度不能超过2个字符,比如2.34,就超过了2位总长度;
第二个数字D,代表小数位的长度限制。0.2表示占用了1个小数位。
这样看,当然M必需大于等于D。
比如设置为float(2,2),那么写入12.3这个数字时,实际插入的是0.99。
比如设置为float(2,1),那么写入12.3这个数字时,实际插入的是9.9。
mysql会自动截取该字段能接受的最大值存入。
那么设置为float(0,0),则相当于不受限制,或者说受float本身的精度限制。
对于mysql的浮点型,实在太复杂,没搞清,看这篇:http://www.jb51.net/article/31723.htm
再来看看mysql的整型、浮点型,怎么跟oracle的数据类型NUMBER对应的。
先来看看oracle的NUMBER类型的特点:
参考http://www.linuxidc.com/Linux/2012-02/54603.htm
Number(p, s) 声明一个定点数 p(precision)为精度,s(scale)表示小数点右边的数字个数,精度最大值为38,scale的取值范围为-84到127
Number(p) 声明一个整数 相当于Number(p, 0)
Number 声明一个浮点数 其精度为38,要注意的是scale的值没有应用,也就是说scale的值不能简单的理解为0,或者其他的数。
定点数的精度(p)和刻度(s)遵循以下规则:
当一个数的整数部分的长度 > p-s 时,Oracle就会报错。(可见s个位置是留给小数的;p-s个位置是留给整数部分的,这样很清晰啊。p代表整数位和小数位全部的长度限制,这一点跟mysql很像)
当一个数的小数部分的长度 > s 时,Oracle就会舍入。(同上,实际上不会报错,oracle会四舍五入,比如NUMBER(4,2),插入99.248,保存为99.25;插入99.242,保存为99.24;插入99.2448,保存为99.24而不是99.25,注意他四舍五入的位置是s位。)
当s(scale)为负数时,Oracle就对小数点左边的s个数字进行舍入。(暂时不管它)
当s > p 时, p表示小数点后第s位向左最多可以有多少位数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入。(暂时不管它)
经实验,比如定义一个字段为Number(3),那么写入该字段,最多不能超过3个数字。比如,你可以插入999(或-999),但是不能插入1000(或-1000)。以此类推。
比如定义一个字段为Number(3,2),那么写入该字段,最多不能超过3位的整数,最多2位的小数。
综上,我们可以看出mysql和oracle的对应关系:
mysql
oracle
理由
tinyint(1字节)
以及tinyint unsigned
NUMBER(3)
范围(-128,127) (0,255),所以至少NUMBER(3)对应。
但是不能NUBER(1),这样只能最大存9。
smallint(2字节)
以及smallint unsigned
NUMBER(5)
范围(-32 768,32 767) (0,65 535) ,所以至少NUMBER(5)对应。
MEDIUMINT(3字节)
以及
MEDIUMINT unsigned
NUMBER(7)
以及
NUMBER(8)
范围(-8 388 608,8 388 607) (0,16 777 215),所以
非unsigned用NUMBER(7)对应;
unsigned用NUMBER(8)对应。
int(4字节)
以及
int unsigned
NUMBER(10)
范围(-2 147 483 648, 2 147 483 647) (0,4 294 967 295),
所以至少NUMBER(10)对应。
bigint(5字节)
以及bigint unsigned
NUMBER(19)
以及
NUMBER(20)
范围(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)
(0,18 446 744 073 709 551 615),
所以非unsigned用NUMBER(19)对应;
unsigned用NUMBER(20)对应。
float(m,d)
以及
unsigned
NUMBER(m,d)
因为NUMBER(m,d)是定点数,精度超过浮点数。
所以只需保持位数一致即可,精度也会更强。
double(m,d)
以及
unsigned
NUMBER(m,d)
同上。
decimal(m,d)
以及
unsigned
NUMBER(m,d)
Decimal(n,m)表示数值中共有n位数,其中整数n-m位,小数m位。
例:decimal(10,6),数值中共有10位数,其中整数占4位,小数占6位。
p (有效位数)必需是1~38之间的数。
ORACLE中有SMALLINT,INT,INTEGER类型,不过这是NUMBER(38,0)的同义词。
-
Python中的整型占多少个字节?
2020-11-21 03:32:57说到计算机中的整型,相信很多人都会联想到32位整型(或者int),是程序员日常生活中用的最多的一种类型。32位整型顾名思义,占用32个位也就是4个字节,取值范围−2,147,483,648...但是Python中的一个整型到底占用多...说到计算机中的整型,相信很多人都会联想到32位整型(或者int),是程序员日常生活中用的最多的一种类型。32位整型顾名思义,占用32个位也就是4个字节,取值范围−2,147,483,648~ 2,147,483,647 。C/C++中是4个字节,Java中也是4个字节,但是Python中呢?
我们知道Python中也有int类,而且非常好用,原生支持高精度计算。但是Python中的一个整型到底占用多少字节呢?我相信绝大多数的Python程序员从未想过这一点,越是习以为常的东西越是不会在意它的存在。
在Python中,如果想要知道一个对象所占用的内存大小,只需要使用sys.getsizeof这个API就可以了。那就让我们来试一下不同的整数
1
2
3
4
5
6
print(sys.getsizeof(0))# 24
print(sys.getsizeof(1))# 28
print(sys.getsizeof(2))# 28
print(sys.getsizeof(2**15))# 28
print(sys.getsizeof(2**30))# 32
print(sys.getsizeof(2**128))# 44
从上面的小实验可以看出,一个整型最少要占24字节(0),1开始就要占用28个字节,到了2的30次方开始要占用32个字节,而2的128次方则要占用44个字节。我们可以得到两点规律,1. 字节数随着数字增大而增大。2. 每次的增量是4个字节。 好像至此已经回答了我们的题目中的问题:Python中的整型占多少个字节?答案是:变长的(相对于int32的定长),而且最少24个字节。
你以为本文到这里就结束了吗?那你就图样图森破了。一个整型数2,居然要占用28个字节!这完全了颠覆了我的认知,我一定搞清楚为什么。 在哥们的帮助下,我找到了Python的源码。 https://github.com/python/cpython
Python的官方实现是C语言,所以叫cpython。这也就意味着只要Python还在,C就会不消失。其他实现还有jython(Java), IronPython (.Net), PyPy (Python)。
第一件事情要搞清楚的是Python中int类型在cpython的名字是什么?看了半天,在 longobject.h 中发现了一个叫 PyLongObject 的结构体。然而它只是一个马甲,是 _longobject的别名。在longintrepr.h中找到了 _longobject的定义如下:
1
2
3
4
struct_longobject{
PyObject_VAR_HEAD
digitob_digit[1];
};
在文件的开头就看到了typedef uint32_t digit;,digit就是unit32_t, 每个元素占4个字节。但PyObject_VAR_HEAD又是什么鬼?在object.h中发现了它是个宏,上面的注释倒是挺有意思的。
1
2
3
4
5
6
7
/* PyObject_VAR_HEAD defines the initial segment of all variable-size
container objects. These end with a declaration of an array with 1
element, but enough space is malloc'ed so that the array actually
has room for ob_size elements. Note that ob_size is an element count,
not necessarily a byte count.
*/
definePyObject_VAR_HEADPyVarObjectob_base;
等一下,PyVarObject又是什么?还好定义就在下面。
1
2
3
4
typedefstruct{
PyObjectob_base;
Py_ssize_tob_size;/* Number of items in variable part */
}PyVarObject;
又一层嵌套,是不是已经晕了,继续查看PyObject的定义,这次反而在上面了。
1
2
3
4
5
typedefstruct_object{
_PyObject_HEAD_EXTRA
Py_ssize_tob_refcnt;
struct_typeobject *ob_type;
}PyObject;
有完没完啊?_PyObject_HEAD_EXTRA又是什么?看了一下发现它只在debug build中有定义,这里就不展开了。Py_ssize_t等于ssize_t如果有定义的话, ssize_t在64位的机器上就是long。_typeobject又是什么?感觉应该非常大,不然就不会用指针了。不过话说回来,既然用了指针,我又何必去关心它是什么呢?反正就是8个字节而已,指向一个内存地址。至此真相大了一个白,如果我们把structs flatten, PyLongObject 定义如下:
1
2
3
4
5
6
structPyLongObject{
longob_refcnt;// 8 bytes
struct_typeobject *ob_type;// 8 bytes
longob_size;// 8 bytes
unsignedintob_digit[1];// 4 bytes * abs(ob_size)
};
ob_refcnt引用计数 8个字节,ob_type类型信息 8个字节(指针),ob_size变长部分元素的个数,8个字节。ob_digit变长的数据部分,字节数为4*abs(ob_size),ob_size可以为0,所以最少8+8+8=24字节,每次增量都是4 (unsigned int) 的倍数。这和我们之前观察到的实验结果吻合。
以上都是基于64位的Python,对于32位的版本,定义如下:
1
2
3
4
5
6
structPyLongObject{
intob_refcnt;// 4 bytes
struct_typeobject *ob_type;// 4 bytes
intob_size;// 4 bytes
unsignedshortob_digit[1];// 2 bytes * abs(ob_size)
};
32位就要比64位小很多了,最少12个字节,增量为2个字节。
好了,今天就写到这里。相信你对整型数或者Python有了一个新的认识。下面一篇我们会将会介绍整型数在Python中的表示和计算。
-
汉字和数字站几个字节,估算内存占用情况
2020-05-12 06:20:17中文标点占三个字节,一个英文字母占一个字节,英文标点占一个字节,一个数字占一个字节 字节的换算关系为: 1字节(Byte)=8字位=8个二进制数 1字位(bit)=1个二进制数 1B=8b 1KB=1024B 1MB=1024KB 1GB=... -
Java Int 占几个字节
2022-03-07 16:56:40Java Int 占几个字节 -
mysql一个汉字占几个字节
2017-09-11 11:00:20varchar(N), 这里的N是指字符数,并不是字节数.占用的字节数与编码有关 utf-8, 一个汉字3字节 英文字母1字节 -
Java一个汉字占几个字节(详解与原理)(转载)
2019-05-29 23:33:35今天学习Netty做定长消息发送时,发现到UTF-8编码下的中文并非两个字节,是三个字节,omg~,遂翻了篇博客后才发现原来java中文对应的字节长度还有这么多说道,涨姿势了,咳咳~ 原文如下: 忒长了,原文作者大大辛苦... -
float占几个字节
2021-03-06 18:54:00float类型占用4字节内存,表示小数,数据范围在【-2^128 ~ 2^128】【-3.40E+38 ~ +3.40E+38 】之间;float数据类型用于存储单精度浮点数或双精度浮点数。float类型占用4字节内存,表示小数,数据范围在-2^128 ~ 2^... -
java中字符串占几个字节
2021-02-12 20:00:12首先,char为Java的基本类型,基本类型所占的字节数是固定的,如int占4字节,double占8字节,这可以使得Java在不同的平台上所占...在String中,一个英文字符占1个字节,而中文字符根据编码的不同所占字节数也不同。... -
java基本数据类型各占多少字节?
2021-03-13 19:13:03Java一共有8种基本数据类型:int占4字节,short占2字节,long占8字节,byte占1字节,float占4字节,double占8字节,char占2字节,boolean占1字节。Java一共有8种基本数据类型(原始数据类型):类型 存储要求 范围... -
JAVA各种类型各占多少字节,多少位
2021-02-26 10:35:39JAVA各种类型各占多少字节,多少位在Java中一共...(一个字节等于8个bit)int 类型占32个字节; 4 位;short 类型占16个字节; 2位;long 类型占64个字节; 8位;float 类型占32个字节; 4位;double 类型占64个字节; ... -
java中char占几个字节?
2021-02-12 15:02:54java中char占几个字节?java中的一个char占用2个字节。java采用unicode,2个字节来表示一个字符。 一个数字或英文或汉字都是一个字符,只不过数字和英文时,存储的2个字节的第一个字节都为0,就是浪费了点空间。存... -
gbk/utf8/gb2312 编码中汉字字母数字所占字节数
2021-04-26 10:20:26 -
Java 一个数字、字母、汉字各占几个字节
2014-09-17 10:55:25中国字比较复杂,1字节=8位,8位从0000 0000到1111 1111只能表示256个字符,2个字节是2*8=16位,从0000 0000 0000 0000到1111 1111 1111 1111可以表示65535个字符。 6万多个足以表示我们经常用的那些字了。所以我们... -
一个字符占几个字节
2020-12-10 00:56:32一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。如一个ASCII码就是一个... -
python中int类型占了多少个字节
2021-02-02 23:14:15python中int类型占了多少个字节发布时间:2020-11-20 14:04:35来源:亿速云阅读:73作者:小新小编给大家分享一下python中int类型占了多少个字节,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,... -
oracle数据库一个汉字占几个字节
2019-10-17 09:39:59***和数据库的编码有关系*** 1、数据库编码查询sql: 1)、SELECT value$ FROM sys.props$ WHERE name = 'NLS_... ZHS16GBK:一个汉字占用2个字节 AL32UTF8:一个汉字占用3个字节 2)、select userenv... -
细说一个汉字等于几个字符,以及汉字,字符,字节,位之间的关系
2021-01-27 02:51:54一:1个汉字 = 1个字 = 1个字符二:1个字符 = 1个字节 = 8bit(ACSII码下)三:1个字符 = 2个字节 = 16bit(Unicode码下)以前一直使用oracle11g,一个汉字占3个字节,所以在操作MySQL时也一直这样分配长度。今天测试了... -
一个字节由几个二进制位组成
2021-07-03 05:36:14聊到几个,我们许多人都了解,有人问一个字节由几多个二进制位组成,还有朋友想问一个字节由几个二进制位构成,这到底怎么回事呢?事实上在计算机中一个字节由几个二进制位构成呢,小编为各人带来一个字节由几个二... -
UTF-8编码占几个字节?
2021-12-08 09:44:36占2个字节的:带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文...一个utf8数字占1个字节 一个utf8英文字母占1个字节 少数是汉字每个占用3个字节,多数占用4个字节。 占用3个字节的范围 U+2E80 - -
一个汉字在数据库占几个字节
2021-01-19 04:42:25项目中oracle10g数据库表字段为...UTF-8字符集,一个汉字占三个字节,gbk字符集,一个汉字占两个字节,比如varchar(10)类型的字段,UTF-8的汉字,只能存3个,gbk字符集的汉字却能存5个。所以在程序中根据表字段varch... -
javascript中一个字符占几个字节
2019-01-23 10:23:01一般来说英文是1个,中文是两个。但是会根据编码方式不同而不同。以下是搬运: 英文字母和中文汉字在不同字符集编码下的字节数 英文字母: 字节数 : 1;编码:GB2312 字节数 : 1;编码:GBK 字节数 : 1;编码:GB18030 ... -
int占几个字节
2021-05-22 17:12:39手机评站网今天精心准备的是《int占几个字节》,下面是详解!int占多少字节?int有shortint,int,longint三种形式,它们分别占多少字节?如果只输入int,它是不是可以包含以上三种形式?...int有short int,int,... -
英文字符占几个字节?汉字字符、还有标点呢?????
2021-01-17 14:39:23展开全部一个英文字符等于1个...在多数的计算机系统中,一个字节是一个8位长的数据单位,大多数的计算机用一个字节表示一个字符、数字或其他字符。一个字节通常8位长,在计算机中作为1个数字单元,一般为8位二进制数... -
一个汉字到底占几个字节
2020-08-12 16:31:47总结:这和编码有关,UTF8一个汉字占3个字节,GBK一个汉字占2个字节。 当我上第一节计算机课的时候,我的电脑老师跟我说,一个英文字符是1个字节,一个中文是2个字节。这么多年来,我对此一直坚信不移,相信很多人也... -
字符串在Python内部是如何省内存的
2020-12-09 18:30:27每个标准 Unicode 字符占用 4 个字节。这对于内存来说,无疑是一种浪费。Unicode 是表示了一种字符集,而为了传输方便,衍生出里如 utf8 , utf16 等编码方案来节省存储空间。Python内部存储字符串也采用了类似的...