判别机器大小端,打印int的二进制
在学习c的位运算,有点作用的几个函数。
union int_per_byte_u{unsigned int value;unsigned char bs[4];
};void print_per_byte(in int a)
{union int_per_byte_u b;int i;b.value = a;for( i=0; i<4; ++i ){printf("%d ", b.bs[i]);}printf("\n");
}int is_small_endian()
{short i = 0x0001;return ((char *)&i)[0];//[0] is low byte, [1] is high byte.
}int is_big_endian()
{union int_per_byte_u b;b.value = 1;if( b.bs[0] )return(0);return(1);//[0] is low byte, [1] is high byte.
}void print_binary_xx(in const char *a,in int bytes)
{const char *pos = a;int i,j;if( is_small_endian() ){for(i=bytes-1; i>=0; --i){for(j=7; j>=0; --j){printf("%d",( pos[i]&(1<<j)?1:0 ));}printf(" ");}}printf("\n");
}double absolute(in double x)
{double tmp = x;*(((int *)&tmp)+1)&=0x7fffffff;return tmp;//0&1=0//to the high byte,highest zero is postive.
}int align_down(in int a,in int size)
{return (a&~(size-1));
}int align_up(in int a,in int size)
{//-b = ~(b-1);return ((a+size-1)&~(size-1));
}
</pre><p><pre name="code" class="cpp">int main()
{printf("lesson_1 hacker's book. size int %d \n", sizeof(int));printf("big endian:%d, small endian:%d \n",is_big_endian(), is_small_endian());printf("sizeof void",sizeof(void));//two ff is a byteint a=0x010204ff;print_binary_xx( (char *)&a, 4);//absolutedouble n = -1.2;print_binary_xx( (char *)&n, 8 );double abs = absolute( n );print_binary_xx( (char *)&abs, 8 );//up-down-alignint down = align_down( 63, 16);int up = align_up( 63, 16 );printf("down align:%d, up align:%d \n",down, up);return 0;
}
判别机器大小端,打印int的二进制相关推荐
- 经典笔试题:用C写一个函数测试当前机器大小端模式
"用C语言写一个函数测试当前机器的大小端模式"是一个经典的笔试题,如下使用两种方式进行解答: 1. 用union来测试机器的大小端 1 #include <stdio.h&g ...
- Java打印int类型二进制
在java中,int类型是4个字节,一共32位. java中int有正负,所以int类型表示范围位是 -(2^(31))到 2^(31)-1 如何打印一个int类型的变量的二进制? 因为有32位置,所 ...
- 测试机器大小端的方法
首先,给出一些大小端相关概念. 大小端的由来: 在乔纳森·斯威夫特的著名讽刺小说<格列夫游记>中,小人国内部分裂成Big-endian和Little-endian两派,区别在于一派要求从鸡 ...
- linux中判断平台是大端或小端的方法,判断机器大小端的方法
以前就简单据说过电脑的大小端之分,还有经过程序来判断你的电脑是大端仍是小端.今天在学习网络的时候又接触了大小端,这里就再给你们详细的介绍一下电脑的大小端.node 首先,介绍一下什么是大端什么是小端. ...
- 什么是大小端?如何测试某台机器是大端还是小端。
大小端是指数据在内存中的保存方式. 顾名思义 大小端 就是大端和小端. 大端模式: 所谓的大端模式,是指数据的高字节,保存在内存的低地址中,数据的低字节,保存在内存的高地址中. 低地址存在高位,高地址 ...
- 彻底弄懂什么是大小端
目录 一.什么是大小端? 二.举列: 三.为什么有大小端模式之分呢? 四.经典笔试题:用C语言代码测试机器大小端 一.什么是大小端? 表示数据在存储器中的存放顺序 小端模式:数据的高字节,存放在高地址 ...
- C++ int float double类型的数据大小端转化
以下代码抄自<网络多人游戏架构与编程>,可以支持float.int.double等数据类型数据的大小端转换,测试代码为: void TestByteSwap() {int32_t test ...
- 计算机存储的大小端模式解析
---------------------------------------------------------------------------------------------------- ...
- C语言基础09——数据在内存中的存储。整型的存储、大小端讲解、浮点数的存储、杨辉三角、找凶手、猜名次
目录 数据类型 基本内置类型 类型的基本分类 整型在内存中的存储 计算机中整数的三种表示方法:原码.反码.补码 大小端 练习 浮点型在内存中的存储 为什么以下程序输出结果与想象不同? 浮点数存储规则 ...
- 大小端、字节顺序转换函数和IP地址格式转换函数
大小端.字节顺序转换函数和IP地址格式转换函数 大小端 CPU大小端之分 常见字节序 字节顺序转换函数 Linux系统下定义 Windows系统下 ntohs() htons() htonl()和nt ...
最新文章
- Windows phone 7新开发工具发布
- SAP事务码MM17物料主数据批量维护
- JAVA 泛型中的通配符 T,E,K,V,?
- ssm整合之四 分页
- Python项目实战:爬取斗图网表情包图片
- mybatis #与$区别
- 脚本录制软件python 按键精灵 tc_GitHub - yang-dongxu/KeymouseGo: 类似按键精灵的鼠标键盘录制和自动化操作...
- matlab 格式化文件,Matlab 文件格式化/Matlab Source File Formator
- 【5年Android从零复盘系列之二十八】Android存储(3):assets文件详解
- 适合普通人的基金投资研究工具之:且慢与基金组合
- 继承 方法重写 组合(尚学堂视频学习总结_003)
- python 统计英语文档词汇出现频率,以六级真题为例
- 普普通通的算法期末考试试卷
- Datagrid striped 不工作?
- 程序员更容易生女孩子,是不是真的?
- 开水果店的一些拿货小建议,水果店第一次如何拿货
- 人的一生七八十年,到底该如何度过?
- 用网络摄像头做延时摄影(WPF+Emgu.CV)
- 宁高宁:五个环节让你看懂中国企业
- 360浏览器等被金山毒霸网强制霸占问题解决
热门文章
- matlab mtf,MtF - MATLAB Central
- 使用Dumuz淘宝订单批量插旗备注
- 全息投影是计算机技术吗,3D全息投影技术怎么应用在展厅的?
- 阿里面试题 ——输入一个字符串,输出所有的排列
- uniapp 苹果安全区配置
- 基于SSM的医院科室人员管理系统
- linux运行igv报错,IGV 哐当就不能用了,除了换台电脑还能怎么办?
- GitHub 用户专属福利,实际到账 3K+,Namebase Airdrop
- Educational Codeforces Round 61 (Rated for Div. 2) D. Stressful Training(贪心+二分)
- Android工具 - 随机测试(猴子)