首页 > C语言中字符型在计算机中的存储

C语言中字符型在计算机中的存储

一. 字符型的分类和表示范围

       char:是有符号还是无符号数视编译器而定,一般为有符号数,下文把它全部当成有符号数进行讨论

                   表示范围:32位和64位机器上均是一个字节,所以是八个bit位,最高位为符号位之后,后七位是数据位,所以它的取值范围是-128---127(-2^7---2^7-1)

       signed char :有符号数,和上面一样

       unsigned char:无符号字符型

                                    表示范围:一个字节,八个bit位全部是数据位,所以取值范围是0---255(0---2^8-1)

二. 计算机对字符型数据的存储和读取

      字符型在计算机中是按照整型的规则进行存储的,如果是有符号类型,则最高位为符号位,0表示正,1表示负,其余七位为数据位。如果是无符号数,则八个位均为数据位。

      这里我们讨论有符号位中,0和-128的存储规则。如果按照有符号数的存储规则,我们知道0000 0000表示0,那么1000 0000表示负0,这显然与我们的现实生活不符,而且也造成表示范围的减小。那么1000 0000表示的是什么数字呢。这里规定,当计算机用一各有符号数去读取1000 0000时,会自动的在1的前面补1,这样原来的8个bit位就变成了9个,其中补充的1作为符号位,又因为计算机是以补码的形式进行存储,这样1 1000 0000(补码)减1,变成了1 0111 1111(反码),再符号位不变,其余位按位取反得到1 1000 0000(原码),即得到了-128。

更多相关:

  • pcl_common库包含大多数PCL库使用的公共数据结构和方法。核心数据结构包括PointCloud类和许多用于表示点、表面法线、RGB颜色值、特征描述符等的点类型。它还包含许多用于计算距离/范数、均值和协方差、角度转换、几何变换,等等。这个模块是不依赖其他模块的,所以是可以单独编译成功,单独编译出来可利用其中的数据结构自行开发,当...

  • 第五章 [BX]和loop 1.内存单元间接表示: [bx] mov  dl, [0];  dl  ←  ((ds)×16 + 0) mov  bx, 0 mov  dl, [bx];  dl  ←  ((ds)×16 + (bx)) 可以使用bx间接访问内存单元。默认,段地址在ds。   2.loop指令 (1) 语法格式    ...

  • 1. Container Bootstrap中容器类提供了2个类标识:container、container-fluid。 两者的区别在于:container:容器不止有15px的padding,还有一个随着浏览器宽度变化而变化的margin。container-fluid:只有固定的15px的padding。 因此,containe...

  • Servlet API: javax.servlet.http.HttpServletResponse 用于创建HTTP响应,包括HTTP协议的状态行、响应头以及消息体 HTTP状态码: 100-199:表示信息性代码,标示客户端应该采取的其他动作,请求正在进行。 200-299:表示客户请求成功。 300-399:表示用于已经移走的...

  • 曾在很多书籍中看到过关于原码、反码和补码的介绍,都未能够深入理解。今在Richard Blum编写的《汇编语言程序设计》一书中读到关于带符号整数一节的讲解时(确切的说是其中的一句话),的确有茅塞顿开、恍然大悟之感。原文如下:   7.2.3 带符号整数   虽然使用无符号整数很容易,但是其缺陷是没有办法表示负数。为了解决这个问题,在处...

  • 在词法分析中,有条规则:每个符号应该包含尽可能多的字符,被称为“贪心法”或“大嘴法”。   K&R表述如下:如果(编译器的)输入流截止至某个字符之前都已经被分解为一个个符号,那么下一个符号将包括从该字符之后可能组成一个符号的最长字符串。     如: a---b 被编译器解释为 (a--)-b 转载于:https://www.cn...