结论写在前面

sizeof返回的是以字节(byte)为单位的大小,char的大小永远都是1字节。

字节通常情况下为8位,但是不是必然,也可能是别的大小,比如TI的28x系列DSP里 一个字节的大小为16位。

事情经给

前段时间,发现一个没见过的事情,TI的28x系列DSP中,一个char占据的空间是16位的,但是sizeof(char)的返回值是1。

一开始没注意,后来在程序里读文件,发现读到的值和预期的效果有差异,调试看内存发现从文件读进的一个连续的char的数组,竟然是16位16位占空间的。给char的变量赋值0xFFFF也可以正常的赋值,内存里显示的变量内容就是0xFFFF。于是我认为这个char大小就是16位。

就把这个现象微信群里和朋友说了下,朋友死活不信,认为char就是八位。只不过编译器为了运算效率,内存存储优化成了16字节。哪怕内存监视的时候显示是16位,但用的时候只能按照8位用。

双方僵持不下,当时DSP这块板子也不在身边,没办法talk is less, show me the code。

于是开始翻C89的规范。

里面很明确的提到了sizeof返回的是以byte为单位的大小,而且sizeof(char)的返回值必然为1,也就是1byte。

当时我的认知一直认为一个byte就是8位,所以感觉,这里的c标准在自相矛盾,怀疑是这句子里存在着我不懂的语法,导致我的理解问题有问题(后来证明我想太多)。

后来接着搜各种关键词,搜到了一份28x系列的编译器用户指南,

Note这一段讲的非常清楚。这个系列的Byte大小是16位的。又去搜了下Byte这个词条,发现Wiki上也没有说Byte一定是八位的。

所以问题解决,结论见上。

1字节不是一定是8位。相关推荐

  1. 1KB (Kilobyte 千字节)=1024B=8192b【大B代表Byte字节,小b代表bit位】

    PS: 1M能存放多少给字母?在计算机中有多少位? A:计算机的实际存储中,是以簇(每个分配单元)为单位,也就是说占用空间>=实际大小.例如,我的C盘,每个分配单元中有 4096 字节(可以cm ...

  2. 最直白详细:“1字节(byte)”等于多少“位(bit)”

    1byte等于8bit.数据存储是以"字节"(Byte)为单位,数据传输大多是以"位"(bit)为单位,一个位就代表一个0或1(即二进制),每8个位(bit)组 ...

  3. java字节对齐 32 64_【C语言】字节对齐问题(以32位系统为例)

    1. 什么是对齐? 现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型 ...

  4. 【C语言】字节对齐问题(以32位系统为例)

    1. 什么是对齐? 现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型 ...

  5. c语言 字节 半字 字,PLC的位,半字节,字节,字介绍

    PLC采用五种数据类型来形成不同的指示.下面是数据类型的解释. 打开今日头条,查看更多精彩图片 位,半字节,字节,字与双字之间的关系如下 二进制,八进制,十进制,BCD,十六进制 DVP-PLC内部依 ...

  6. 字节,比特,字符,位,单位换算

    字节(Byte): 一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间.  英文标点2占一个字节,中文标点占两个字节.  1字节(Byte) = 8位(bit)  比特(Bit) ...

  7. c语言 字节某位取反 amp;=,C语言位运算

    C语言里位运算就是对一个比特(Bit)进行操作,比特(Bit)是计算机的一个电子元件,只有通电和断电两种状态(这也是为什么计算机会采用二进制进行运算,1代表通电,0代表不通电),8个比特构成一个字节( ...

  8. c 语言测量字节数,用C/C++测试编译器中关键字占多少个字节?以及16/32/64位平台下的字节数...

    转自这位大佬:https://blog.csdn.net/cherrydreamsover/article/details/81410364 https://blog.csdn.net/cherryd ...

  9. 字节转换比特位c语言,C语言实现双字节在数组中按比特位移动

    先说一下应用场合,在LED点阵显示屏中,为了节省flash空间,常用一个bit位来标记哪个灯是否点亮.为了做出比较炫的效果,比如16 * 16像素gif动画边边移动边跳跃.就应用到该思想. 双字节是1 ...

最新文章

  1. OpenCV 【十八】图像平滑处理/腐蚀与膨胀(Eroding and Dilating)/开闭运算,形态梯度,顶帽,黑帽运算
  2. windows命令行下访问linux,Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux...
  3. 隐马尔可夫模型维特比算法与前向算法区别
  4. R语言文件下载:谁来帮我把这个128个音频下载一下
  5. ML激活函数使用法则
  6. Qt中ui文件的使用
  7. Notepad++远程连接Linux系统
  8. 引入我们全新的YouTube频道进行视频课程编程
  9. vc中提取curve
  10. Meteor的工作原理及优势与不足
  11. mysql commit undo_详细分析MySQL事务日志(redo log和undo log)
  12. 深度报告 | 4G应用启示录与5G应用展望
  13. 教你用PHP爬取王者荣耀英雄皮肤高清壁纸(附源码)
  14. Python视觉深度学习系列教程 第三卷 第9章 Kaggle竞赛:情绪识别
  15. loadrunner入门教程(14)--检查点
  16. 【centos-16】专业的原理图
  17. 程序生成随机双色球号码~golang
  18. 浙大互联网协会(INA)2020~2021学年纳新启动!
  19. 从7个方面看人工智能的失败
  20. Python单重循环练习题

热门文章

  1. git reset中hard与soft区别
  2. 信息技术社团活动点名表
  3. Kubernetes(k8s)CNI(Calico)网络模型原理
  4. 用扫地机器人楼下吵吗_关于扫地机器人噪音的一些知识
  5. 错误 LNK2026 模块对于 SAFESEH 映像是不安全的。
  6. CocosCreator之Animation动画组件
  7. 存储过程——天使还是魔鬼
  8. 【利用二进制位做输出】抖音上“输出方块8”的看法
  9. 牛客网C语言考试输入输出问题
  10. 卸载Navicat!操作所有的数据库靠它就够了