输出变量的字节表示形式
来源:互联网 发布:德州公安局网络监察 编辑:程序博客网 时间:2024/05/29 03:25
深入理解计算机系统P28提到了输出变量的字节表示形式。
不同的处理器,有两种排列表示规则,一种是小端法,另一种是大端法。
书中图2-4提供的程序使用的是unsigned char 类型的指针变量。然后我试着输出了16(int)的字节表示形式,如下图:
随后我有一个想法,输出字节表示形式能否用char类型的指针变量呢?经过实验发现16(int)的字节表示形式与之前的结果是完全相同的。但-16(int)的字节表示形式的结果与之前有些”不同”了,结果为:
随后通过网络查找关于unsigned char 与 char的资料也没有找到答案。后来查找到了关于输出占位符%x的含义:”%x无符号以十六进制表示的整数”。
咦?整数?好像找到了原因。
整数占4个字节,2个16进制位占1个字节,机器存储整数是以补码的形式。负数的最高位是1,那也就需要输出8个16进制位了。
关于符号位扩展的相关资料:
一、短数据类型扩展为长数据类型
1、要扩展的短数据类型为有符号数的
进行符号扩展,即短数据类型的符号位填充到长数据类型的高字节位(即比短数据类型多出的那一部分),保证扩展后的数值大小不变[1]:char x=10001001b; short y=x; 则y的值应为11111111 10001001b;
[2]:char x=00001001b; short y=x; 则y的值应为00000000 00001001b;2、要扩展的短数据类型为无符号数的
进行零扩展,即用零来填充长数据类型的高字节位[1]:unsigned char x=10001001b; short y=x; 则y的值应为00000000 10001001b;
[2]:unsigned char x=00001001b; short y=x; 则y的值应为00000000 00001001b;二、长数据类型缩减为短数据类型
如果长数据类型的高字节全为1或全为0,则会直接截取低字节赋给短数据类型;如果长数据类型的高字节不全为1或不全为0,则转会就会发生错误。
三、同一长度的数据类型中有符号数与无符号数的相互转化
直接将内存中的数据赋给要转化的类型,数值大小则会发生变化。另短类型扩展为长类型时,但短类型与长类型分属有符号数与无符号数时,则先按规则一进行类型的扩展,再按本规则直接将内存中的数值原封不动的赋给对方。
- 输出变量的字节表示形式
- 指定long型数据的字节大小表示形式
- 输出变量的每个字节的值
- 输出变量的每个字节的值
- 这个积分是不是很难用不含变量的函数形式表示?
- 将一个int类型变量(4字节), 以二进制形式进行输出--showbits.c
- 用一个双字节变量表示两个单字节组成的双字节数据
- 字符串的表示形式
- JSON的表示形式
- C#控制台 将变量以百分比的形式输出
- 机器数的表示形式
- 变换的矩阵表示形式
- javascript函数的表示形式
- excel的xml表示形式
- 给定一个仅包含'A'-'Z'的字符串,表示成'kX'形式输出
- cout的输出形式
- 对于一个字节(8bits)的变量,求其二进制表示中“1”的个数
- 求字符串的字节表示
- nyoj49坑爹
- js日期比较
- Pattern:group
- Linux下Nginx如何切割访问日志?
- jsp中jstl标签库里面变量设置基础教程
- 输出变量的字节表示形式
- Linux下gcc编译生成动态链接库*.so文件并调用它
- linux中I/O流中的全缓冲、行缓冲和无缓冲,简明实例演示
- 解决EditText编辑框在Fragment中无法获取焦点
- String Distance compare (最佳字符串匹配算法(Damerau-Levenshtein距离算法))
- html学习笔记二(W3CSchool)
- XCODE编译错误:target specifies product type 'com.apple.product-type.tool'
- 生成树计数 nyoj 127
- mac 安装 python库时报错clang: error: unknown argument: '-mno-fused-madd'