判别机器大小端,打印int的二进制
来源:互联网 发布:linux tail f 编辑:程序博客网 时间:2024/05/05 20:40
在学习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;}
0 0
- 判别机器大小端,打印int的二进制
- 机器大端,小端的判别及int ,long, long long 尺寸大小的判别
- 打印int值的二进制形式
- 大小端模式判别
- 芯片大小端判别
- C语言中打印int值的二进制形式
- 打印数据的二进制格式 float double int char long
- 计算机大小端判别方法
- 机器的大小端
- 关于Integer、 int、 String 的比较判别
- 大小端的一些知识复习及 用Union写一个大小端判别程序
- 判断机器的大小端
- 大小端机器的判定
- 机器大小端的检测
- 机器大小端的检测
- 判断机器的大小端
- 不使用sizeof,确定机器int大小
- 把一个int()或者byte(字节)以二进制的形式打印出来
- Linux常用操作之sshfs挂载、卸载
- 利用jspsmartupload和数据库进行图文信息的发布和管理
- java简介和开发环境搭建
- 学习Unity3D之登陆。
- java之成员变量和局部变量的区别
- 判别机器大小端,打印int的二进制
- TFS - nginx-tfs模块
- kickstart配置文件详解和system-config-kickstart
- 使用Eclipse远程调试及原理
- django cpu监控之九-----使用psutil获取CPU数据
- startActivityForResult 的用法
- 输出1000-2000之间的润年
- 数据库多表链接
- Exercise