最近项目对位和字节编码操作比较多,但总是容易忘记这些之间的基本逻辑关系需要去查一下才行。简单整理了一下相关基本概念以及C和Python的数据类型字节数。
基本简介
1、位(bit) 来自英文bit,音译为“比特”,表示二进制位。位是计算机内部数据储存的最小单位,11010100是一个8位二进制数。一个二进制位只可以表示0和1两种状态(2^1);两个二进制位可以表示00、01、10、11四种(2^2)状态;三位二进制数可表示八种状态(2^3)……。
2、字节(byte) 字节来自英文Byte,音译为“拜特”,习惯上用大写的“B”表示。 字节是计算机中数据处理的基本单位。计算机中以字节为单位存储和解释信息,规定一个字节由八个二进制位构成,即1个字节等于8个比特(1Byte=8bit
)。八位二进制数最小为00000000,最大为11111111;通常1个字节可以存入一个ASCII码,2个字节可以存放一个汉字国标码。
3、字 计算机进行数据处理时,一次存取、加工和传送的数据长度称为字(word)。一个字通常由一个或多个(一般是字节的整数位)字节构成。例如286微机的字由2个字节组成,它的字长为16;486微机的字由4个字节组成,它的字长为32位机。 计算机的字长决定了其CPU一次操作处理实际位数的多少,由此可见计算机的字长越大,其性能越优越。
关系
- 1字节8位 :
1Byte=8bit
- 一个16进制数半个字节
- 一位16进制数(用二进制表示是xxxx)最多只表示到15(即对应16进制的F)
各语言数据类型字节数
c++
- 修饰符
- signed【默认/带符号,有正负+-】
- unsigned【无符号,以0开始】
- short【短/原先字节数0.5倍】
- long【长/原先字节数加倍】
- 数据类型
- char-> 1byte
- int-> 4byte
- float-> 4byte
- double-> 8byte
- wchar_t -> 2/4byte
python
Python 中,int 数据类型的字节数是可变的,它取决于所表示的整数的大小。在大多数情况下,Python 中的 int 类型使用四个字节(32 位)或八个字节(64 位)来存储整数。然而,在某些情况下,Python 会自动调整 int 类型的字节数以适应大于机器字长的整数。可以使用 sys 模块中的 getsizeof() 函数来获取 Python 中的任何对象占用的内存大小。
- 整型(int)
- 在32位机器上,整数的位数为32位,取值范围为-2^31~2^31-1,即-2147483648~2147483647
- 在64位系统上,整数的位数为64位,取值范围为-2^63~2^63-1,即-9223372036854775808~9223372036854775807
在 Python 中,没有类似于 C 语言中修饰符(如 short、long、long long 等)用于指定整数类型的长度。在 Python 中,整数类型 int 可以表示任意大小的整数,而不需要指定长度。当然,如果需要限制整数的位数或大小,可以使用一些库或工具来实现,比如使用 NumPy 库中的整数类型或者使用 Python 的位运算和位掩码来实现限制整数的范围。
numpy
- 常见数据类型
感觉numpy还是比较好看bit位数的,一部数据类型后面会标注位数,比如uint32,则表示有符号int类型,最大值为2^32 -1
名称 | 描述 |
---|---|
bool_ |
布尔型数据类型(True 或者 False) |
int_ |
默认的整数类型(类似于 C 语言中的 long,int32 或 int64) |
intc |
与 C 的 int 类型一样,一般是 int32 或 int 64 |
intp |
用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64) |
int8 |
字节(-128 to 127) |
int16 |
整数(-32768 to 32767) |
int32 |
整数(-2147483648 to 2147483647) |
int64 |
整数(-9223372036854775808 to 9223372036854775807) |
uint8 |
无符号整数(0 to 255) |
uint16 |
无符号整数(0 to 65535) |
uint32 |
无符号整数(0 to 4294967295) |
uint64 |
无符号整数(0 to 18446744073709551615) |
float_ |
float64 类型的简写 |
float16 |
半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位 |
float32 |
单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位 |
float64 |
双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位 |
complex_ |
complex128 类型的简写,即 128 位复数 |
complex128 |
复数,表示双 64 位浮点数(实数部分和虚数部分) |
complex64 |
复数,表示双 32 位浮点数(实数部分和虚数部分) |
参考
- https://zhuanlan.zhihu.com/p/25309787
- https://blog.csdn.net/Dontla/article/details/103763117
- https://www.runoob.com/cplusplus/cpp-data-types.html
- https://www.runoob.com/numpy/numpy-dtype.html
- https://zhuanlan.zhihu.com/p/103494703