- 博客(6)
- 收藏
- 关注
原创 C语言浮点数和整数转换的分析
这里以C语言的浮点数为例,在IEEE浮点标准下,整数转换为浮点数的过程做一些直观的分析和具体的实现,IEEE浮点数的标准细节详见(http://en.wikipedia.org/wiki/IEEE_754-2008)。 在C语言中,使用float和double类型数据分别对应单精度和双精度的浮点格式。以float为例,由于float是32位,int在32位机器上也是32位。因此,float必然不能对所有的int进行准确的表示。实际上,在数轴上,浮点数所能表示的数呈非均匀的分布。
2011-04-21 21:10:00 28424
原创 判断一无符号整数的二进制形式中是否包含偶数个1
题目要求:若二进制无符号整数x包含偶数个1,返回1,否则返回0.要求:只能使用位运算、加减法和==、!=,最多包含12个算术运算、位运算和逻辑运算,可以假设sizeof(unsigned)==4不能使用乘除模运算,不能使用条件分支,循环,函数调用,大小比较等(详见《深入理解计算机系统》第二章习题)代码如下:int even_ones(unsigned x ){ unsigned x16 = (x>>16)^x; unsigned x8 = (x16>>8)^x16; unsigned x4
2011-04-14 23:25:00 3875 3
原创 习题(移位运算)
<br />编写一个函数 int_shifts_are_arithmetic(), 若机器对int使用算术右移,返回1.否则返回0.<br /> <br /> int int_shifts_are_arithmetic(){ int shift_val = (sizeof(int)-1)<<3; int xright = (-1)>>shift_val; return ((xright & 0x10)==0x10);}<br /> <br />说明:(sizeof(int))<<
2011-04-13 20:34:00 2191
原创 习题(字节顺序)
<br /> <br />函数原型 unsigned put_byte(unsigned x, unsigned char b ,int i)<br /> <br />返回一个无符号值,其中参数x的字节i被替换成b。 字节i是指x的第i有效位,其中最低有效位为i = 0<br /> <br />unsigned put_byte(unsigned x, unsigned char b, int i){ unsigned char* uchar_ptr; assert(i>=0&&
2011-04-13 20:17:00 801
原创 字节顺序
<br />通过显示内存中unsigned类型数据的具体内容,获知机器使用大端法(big endian)/小端法(little endian)<br /> <br />void show_bytes(unsigned x){ int i; unsigned char* ptr; ptr= (unsigned char*) &x; printf("0x%0x : ",x); for(i = 0;i<sizeof(x);i++) printf("%
2011-04-13 20:11:00 583
原创 C语言数据大小
<br /> VC环境下常见C语言数据类型的大小<br />程序如下:<br /> void show_length(){ printf("length of data types in VC6.0(in bytes) /n"); printf("char :%d /n",sizeof(char)); printf("short :%d /n",sizeof(short)); printf("int :%d /n",sizeof(int)); print
2011-04-13 20:01:00 1192
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人