不同变量在内存中的存在形式(以16进制表示)

 1 #include<stdio.h>
 2 int main()
 3 {
 4     char a= -1;           //1111 1111 1个字节
 5     short b= -1;         //1111 1111- 1111 1111 2个字节
 6     int c= -1;          //1111 1111- 1111 1111- 1111 1111- 1111 1111 4个字节
 7     printf("%hhx\n",a); //打印1个字节
 8     printf("%hx\n",b);  //打印2个字节
 9     printf("%x\n",c);  //打印4个字节
10     return 0;
11 }

打印结果:

?

注:

此编译平台为linux系统环境下的centos6.7;若用Qt平台则无法正确编译

格式%x表示打印16进制,1111的16进制表示为一个f

原文地址:https://www.cnblogs.com/onemusk/p/9481867.html

时间: 2024-08-01 19:04:57

不同变量在内存中的存在形式(以16进制表示)的相关文章

Android源码中的FLAG为何使用16进制

1.在阅读源码的时候经常发现有一些标志属性使用一些位操作来判断是否具有该标志,增加标志或者去除标志. 比如View.java中的 /** * This view does not want keystrokes. Use with TAKES_FOCUS_MASK when * calling setFlags. */ private static final int NOT_FOCUSABLE = 0x00000000; /** * This view wants keystrokes. Us

C语言 打印变量在内存中的二进制形式(补码)

void show_bits(int n) { int i = 0; for(i=0;i<32;i++) printf("%d",(n&(1u<<(31-i)))!=0?1:0); putchar('\n'); } 整数的原码 = 整数的补码 负数的补码:(原码)->(反码)->(反码+1) 负数的原码:(补码-1)->最高位符号位别动其余均转反码

java中把字节数组为16进制字串

把字符串数组转换为16进制字符串 import java.security.MessageDigest; public class StringUtil { public StringUtil() { super(); } public static String str; public static final String EMPTY_STRING = ""; private final static String[] hexDigits = { "0", &q

C#中2、8、16进制 有符号转换10进制正负数

曾经让我苦想的其他进制转有符号整型问题,结果自己想到方法解决后才发现原来如此简单. 1.Int16(2个byte长度 ) : 方法 :Convert.ToInt16(进制编码,进制) a.16进制转10进制(带正负的) 方法:Convert.ToInt16(16进制编码,16); 负数例如:(16进制)FFFF=(10进制)-1    解决:C#代码:Convert.ToInt16("FFFF",16);  结果:-1 正数例如:(16进制)1E0=(10进制)480   解决:C#代

MD5中使用16进制

MD5中使用16进制消息摘要 分类: java_secruity2012-12-28 13:11 719人阅读 评论(0) 收藏 举报 消息摘要 由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题. 但,二进制数太长了.比如int 类型占用4个字节,32位.比如100,用int类型的二进制数表达将是: 00000000 00000000 00000000 01100100 面对这么长的数进行思考或操作,没有人会喜欢.因此,C,C++,以及java中 没有

面试经常问的C语言变量在内存中的分布(VC6.0)

C/C++变量在内存中的分布在笔试时经常考到,虽然简单,但也容易忘记,因此在这作个总结,以加深印象. 一: #include <stdio.h> #include <malloc.h> int g_i = 100; int g_j = 200; int g_k, g_h; int main() { const int MAXN = 100; int *p = (int*)malloc(MAXN * sizeof(int)); static int s_i = 5; static i

编程题:展示自动变量在内存中的生存期。

#include<stdio.h> void f(int n) { auto int s=0;  /*auto可以省略*/ s=s+1; printf("No.%d:s=%d\n",n,s); } void main() { int num; for(num=1;num<4;num++) f(num); } 编程题:展示自动变量在内存中的生存期.,布布扣,bubuko.com

获取内存中整数二进制形式

采用移位和相与方式求整数在内存中的二进制形式. #include<stdio.h> typedef int DataType; int num_covert_binary(DataType num); void main() { DataType num; num = -1; num_covert_binary(num); num = 12; num_covert_binary(num); getchar();//让console 等待一下 } int num_covert_binary(Da

[转组第8天] | 变量在内存中的位置和访问方式

2018-05-05 <C++反汇编和逆向技术>第七章 变量在内存中的位置和访问方式 读书笔记 1.全局变量和局部变量的区别 全局变量属于进程作用域,也就是说,在整个进程中都能够访问到这个全局变量.静态变量属于文件作用域,在当前源码文件内可以访问到:局部变量属于函数作用域,在函数内部可以访问到:在"{}"语句块内定义的变量,属于块作用域,只能在定义变量的"{}"快内访问到. 全局变量在内存中的地支顺序是先定义的变量在低地址,后定义的变量在高地址. 全局变