接外包,有相关需求的可以联系我:Telegram | Email

计算机中位(bit)字节(byte) 和字(word)的关系以及常见语言数据类型归纳

该文章创建(更新)于02/18/2023,请注意文章的时效性!

最近项目对位和字节编码操作比较多,但总是容易忘记这些之间的基本逻辑关系需要去查一下才行。简单整理了一下相关基本概念以及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

要不赞赏一下?

微信
支付宝
PayPal
Bitcoin

版权声明 | Copyright

除非特别说明,本博客所有作品均采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。转载请注明转自-
https://www.emperinter.info/2023/02/18/the-relationship-between-bit-byte-and-word-in-computers-and-the-common-language-data-types-are-summarized/


要不聊聊?

我相信你准备留下的内容是经过思考的!【勾选防爬虫,未勾选无法留言】

*

*



YouTube | B站

微信公众号

👉 NewsLetter ❤️ 邮箱订阅 👈

优惠码

阿里云国际版20美元
Vultr10美元
搬瓦工 | Bandwagon应该有折扣吧?
Just My SocksJMS9272283 【注意手动复制去跳转】
域名 | namesiloemperinter(1美元)
币安 币安