编程语言里怎么没有 bit 这样的类型

2021-01-04 09:25:06 +08:00
 zxCoder
3427 次点击
所在节点    问与答
31 条回复
systemcall
2021-01-04 11:28:00 +08:00
@OysterQAQ #13
看看 c51,可以按位寻址
ruokw
2021-01-04 12:52:56 +08:00
内存寻址顶多到 byte,就算语言层面定一个 bit 类型,还是得寻址到 byte
Jirajine
2021-01-04 13:31:58 +08:00
一般来说 byte 用得比较多,二进制协议、格式等都是以 byte 为最小单位。
fuchunliu
2021-01-04 13:40:29 +08:00
bit 一般操作寄存器才会用吧,不做硬件的给你这个类型,你还是占一字节内存,这不是脱了裤子放屁嘛
icyalala
2021-01-04 13:43:28 +08:00
这到底还是历史问题。。

曾经 Intel 还没出来的时候,不少处理器和磁带都是一次操作 6-bit 。
Intel 4004 是按 4-bit chunks 来处理的,
但是从 8086 开始,后面的新处理器基本都是用 8-bit byte 作为最小操作单位了,
再往后随着 CPU 升级,实际 CPU 每次处理 bit 数是提升的,但是出于兼容考虑或者历史原因,byte 仍然是对外的最小处理单位。

说起来 1byte 也不一定就等于 8bit 。。
chitanda
2021-01-04 14:02:32 +08:00
char??
letking
2021-01-04 14:06:28 +08:00
对大多数语言来说,你可以用位运算实现 bit 级别的控制和运算,但是空间占用上只能以 8bit 为最小单位了,再小也没必要了——最多也就浪费 7bit 的空间而已,没必要单独搞一个 bit 类型出来。
b1eberg0n
2021-01-04 14:17:01 +08:00
Erlang:?
sampeng
2021-01-04 14:38:34 +08:00
如果接口文档里这没写:嗨,给我一个 32bit 的字符串。
systemcall
2021-01-04 21:02:01 +08:00
@ruokw #22
看硬件吧。有的就是可以按位寻址的,有的按字节、双字甚至别的方式寻址。和硬件实现有关系
@chitanda #26
char 什么时候是 bit 了?而且如果是现在的 PC,好像是会转成 int 之类的
SmallTeddy
2021-01-05 09:49:35 +08:00
计算机中使用的二进 bai 制数 du 共有 3 个单位:位,字节,字。
位(bit)(b)音译为比特。位 bai 是计算机存储数 du 据的最小单位。一 zhi 个位只能表示 0 和 1 两种状态。
字节(byte)音译为"拜特",常以大写字母"B"表示字节。字节是最基本的数据单位。8 位二进制数为一个字节。
8bit ( 8b ) = 1byte ( 1B )之后就是 KB,MB,GB,TB

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/741367

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX